Comment grouper une série par valeurs dans pandas?
j'ai actuellement un pandas Series
avec dtype Timestamp
, et je veux le grouper par date (et avoir beaucoup de lignes avec des temps différents dans chaque groupe).
la façon apparemment évidente de faire cela serait quelque chose de similaire à
grouped = s.groupby(lambda x: x.date())
Toutefois, les pandas' groupby
groupes série par son indice. Comment puis-je le faire Grouper par valeur à la place?
4 réponses
Vous devriez le convertir en datagramme, puis Ajouter une colonne qui est la date(). Vous pouvez faire groupby sur le DataFrame avec la colonne date.
df = pandas.DataFrame(s, columns=["datetime"])
df["date"] = df["datetime"].apply(lambda x: x.date())
df.groupby("date")
alors "date" devient votre index. Vous devez le faire de cette façon parce que l'objet final groupé a besoin d'un index pour que vous puissiez faire des choses comme sélectionner un groupe.
Trois méthodes:
DataFrame:pd.groupby(['column']).size()
Série: sel.groupby(sel).size()
Série de DataFrame:
pd.DataFrame( sel, columns=['column']).groupby(['column']).size()
Pour quelqu'un d'autre qui veut le faire inline sans jeter un lambda (qui a tendance à tuer la performance):
s.to_frame(0).groupby(0)[0]