2017-02-06 6 views
1

hat einige Suche durchgeführt, aber nichts ergibt das gewünschte Ergebnis, das die Daten nach Datum gruppiert und die Häufigkeit zählt. Ich bin in der Lage, dies mit Aggregat zu tun, aber ich bin mir nicht sicher, wie man eine neue Spalte mit den Ergebnissen erstellt, danke.pandas groupby und aggregieren in neue Spalte

Daten in der Datei:

Domain Dates 
twitter.com 2016-08-08 
google.com 2016-08-09 
apple.com 2016-08-09 
linkedin.com 2016-08-09 
microsoft.com 2016-08-09 
slack.com 2016-08-12 
instagram.com 2016-08-12 
ibm.com 2016-08-12 

Code

import pandas as pd 
import matplotlib.pyplot as plt 
import datetime 
import numpy as np 

df = pd.read_csv('domains.tsv', sep='\t') 
df = df.groupby([pd.to_datetime(df.Dates).dt.date]).agg({'Dates':'size'}) 
print(df) 

ergibt

  Dates 
Dates 
2016-08-08  1 
2016-08-09  4 
2016-08-12  3 

Im Idealfall würde ich die Zählspalte wie 'count' zu sein, und dann werde ich speichern als ein neuer CSV.

+0

Nach was genau suchen Sie? Fragen Sie, wie Sie eine Spalte umbenennen? –

+0

@ juanpa.arrivillaga Ich wusste nicht, dass es zwei Spalten gab, beide mit 'Dates', ich dachte, dass es nur diese Antwort ausgab, weil die Spalte keinen Namen hatte – sn4ke

Antwort

1
import pandas as pd 


df = pd.read_csv('domains.tsv', sep='\t') 
counter = df.groupby('Dates').count().rename(columns={'Domain': 'count'}) 
counter.to_csv('count.csv') 

Sie count.csv einschließlich folgendes Ergebnis auf Ihrem aktuellen Verzeichnis bekommen.

Dates,count 
2016-08-08,1 
2016-08-09,4 
2016-08-12,3 
0
df['count'] = df.groupby(['Dates']).transform('count') 
+0

Sehen Sie, zuerst dachte ich, dass OP das wollte. Jetzt bin ich mir nicht sicher. –

+0

@ juanpa.arrivillaga Ich glaube, er war verwirrt darüber, was er eigentlich ausgab, war schon die Anzahl. –

+0

@ A.Kot, die ein anderes Ergebnis ergibt, ich glaube, ich war verwirrt durch die beiden Spalten mit dem Namen "Dates" in der Ausgabe – sn4ke

Verwandte Themen