[英]Issues with groupby and aggregate in pandas
我不確定我在這里做錯了什么。 這是我的代碼:
df['PV_SUM'] = df.groupby('DOCKET').agg({'PV':sum})
沒有返回任何結果,只是一個空系列。
這是我假設的 dataframe:
DOCKET PV
1a 1
1a 1
1a 1
1b 0
1b 1
1b 1
這就是我正在尋找的結果:
DOCKET PV PV_SUM
1a 1 3
1a 1 3
1a 1 3
1b 0 2
1b 1 2
1b 1 2
我究竟做錯了什么? DOCKET 的數據類型是 object,PV 的數據類型是浮點數。 我已將 dtype 更改為 PV 為 int 但沒有運氣。
改用transform
:
df['PV_SUM'] = df.groupby('DOCKET').PV.transform(sum)
Output:
DOCKET PV PV_SUM
0 1a 1 3
1 1a 1 3
2 1a 1 3
3 1b 0 2
4 1b 1 2
5 1b 1 2
您的代碼的問題是df.groupby('DOCKET').agg({'PV':sum})
返回一個 dataframe ,其中DOCKET
作為索引, PV
作為值列。 當您嘗試將其分配回 daframe 時, pandas 會查找匹配的索引,並且由於沒有匹配項,它會返回NaN
。
例如,看看df.groupby('DOCKET').agg({'PV':sum})
中的 output :
PV
DOCKET
1a 3
1b 2
由於 pandas 與索引匹配,您可以先將 dataframe 的索引設置為“DOCKET”,然后它將按預期工作:
result = df.groupby('DOCKET').agg({'PV':sum})
df = df.set_index('DOCKET')
df['PV_SUM'] = result
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.