[英]Pandas dataframe group by multiple columns
給定具有兩個日期時間列A
和B
以及數字列C
的數據幀,如何month
分組A
和B
以及sum(C)
即
In [1]: df
Out[1]:
A B C
0 2013-01-01 2013-01-01 0.282863
1 2013-01-02 2013-01-01 0.173215
2 2013-02-03 2013-02-04 2.104569
3 2013-02-09 2013-04-15 0.706771
4 2013-03-05 2013-08-01 0.567020
5 2013-03-06 2013-04-01 0.113648
通過使用groupby
df.groupby([df.A.dt.month,df.B.dt.month]).C.sum()
Out[954]:
A B
1 1 0.456078
2 2 2.104569
4 0.706771
3 4 0.113648
8 0.567020
Name: C, dtype: float64
注意:使用此選項,請確保A和B是日期時間格式如果不是,請在groupby
之前執行以下代碼
df.A=pd.to_datetime(df.A)
df.B=pd.to_datetime(df.B)
我最近剛剛閱讀了一個新功能,它使日期分組變得非常容易。
df.A=pd.to_datetime(df.A)
df.B=pd.to_datetime(df.B)
df.groupby([pd.Grouper(key='A', freq='M'), pd.Grouper(key='B', freq='M')])['C'].sum()
這打開的選項數量值得研究:
資料來源: http : //pbpython.com/pandas-grouper-agg.html
不同的日期別名: http : //pandas.pydata.org/pandas-docs/stable/timeseries.html#offset-aliases
df['month_A'] = [i.month for i in pd.to_datetime(df.A)]
df['month_B'] = [i.month for i in pd.to_datetime(df.B)]
df.groupby(['month_A', 'month_B']).sum()
如果您結合使用以下內容,您將使用A和B列中的相應值返回結果
idsum = df.groupby([df.A.dt.month,df.B.dt.month])["C"].transform(sum) == df["C"]
df=df[idsum]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.