簡體   English   中英

pandas 中的 groupby 和聚合問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM