現在、pandas Series
with dtype Timestamp
があり、日付ごとにグループ化したい(そして各グループに異なる時間の多くの行がある)。
これを行う一見明らかな方法は、次のようなものになります
grouped = s.groupby(lambda x: x.date())
ただし、パンダのgroupby
は、インデックスによってシリーズをグループ化します。代わりに値でグループ化するにはどうすればよいですか?
grouped = s.groupby(s)
または:
grouped = s.groupby(lambda x: s[x])
ラムダをスローせずにインラインで実行したい他の人(パフォーマンスを低下させる傾向があります):
s.to_frame(0).groupby(0)[0]
これをDataFrameに変換してから、date()である列を追加する必要があります。日付列を使用して、DataFrameでgroupbyを実行できます。
df = pandas.DataFrame(s, columns=["datetime"])
df["date"] = df["datetime"].apply(lambda x: x.date())
df.groupby("date")
次に、「日付」がインデックスになります。最終的にグループ化されたオブジェクトにはインデックスが必要なので、この方法で行う必要があります。そのため、 グループを選択 のようなことができます。
3つの方法:
データフレーム:pd.groupby(['column']).size()
シリーズ:sel.groupby(sel).size()
データフレームへのシリーズ:
pd.DataFrame( sel, columns=['column']).groupby(['column']).size()
別の提案を追加するために、単純なロジックを使用するため、以下をよく使用します。
pd.Series(index=s.values).groupby(level=0)