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]