繁体   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