web-dev-qa-db-ja.com

パンダの値でシリーズをグループ化する方法は?

現在、pandas Series with dtype Timestampがあり、日付ごとにグループ化したい(そして各グループに異なる時間の多くの行がある)。

これを行う一見明らかな方法は、次のようなものになります

grouped = s.groupby(lambda x: x.date())

ただし、パンダのgroupbyは、インデックスによってシリーズをグループ化します。代わりに値でグループ化するにはどうすればよいですか?

47
Martín Fixman
grouped = s.groupby(s)

または:

grouped = s.groupby(lambda x: s[x])
71
luca

ラムダをスローせずにインラインで実行したい他の人(パフォーマンスを低下させる傾向があります):

s.to_frame(0).groupby(0)[0]
6
Andy Jones

これをDataFrameに変換してから、date()である列を追加する必要があります。日付列を使用して、DataFrameでgroupbyを実行できます。

df = pandas.DataFrame(s, columns=["datetime"])
df["date"] = df["datetime"].apply(lambda x: x.date())
df.groupby("date")

次に、「日付」がインデックスになります。最終的にグループ化されたオブジェクトにはインデックスが必要なので、この方法で行う必要があります。そのため、 グループを選択 のようなことができます。

3
mirthbottle

3つの方法:

データフレーム:pd.groupby(['column']).size()

シリーズ:sel.groupby(sel).size()

データフレームへのシリーズ:

pd.DataFrame( sel, columns=['column']).groupby(['column']).size()

3
Hangyu Liu

別の提案を追加するために、単純なロジックを使用するため、以下をよく使用します。

pd.Series(index=s.values).groupby(level=0)
0
mchl_k