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