我正在使用python工作,并具有一个dataframe(EAD),其中包括“客户”列。还有另一列称为NPV的列,它由数字组成。
CLIENT NPV
0 1 50
1 1 90
2 2 130
3 2 -11
4 2 57
5 3 105
...
...
我的目标是按客户端分组,然后将客户的NPV相加。
我的预期结果如下:
CLIENT NPV
0 1 140
1 2 176
2 3 105
...
我通过使用groupby函数来做到这一点,就像这样:
EAD_CLIENT = EAD.groupby('COUNTERPARTYNAME')['NPV'].sum().reset_index()
但是,当我这样做的时候,我得到了奇怪的输出NPV,它不是正确的数学。
输出:
CLIENT NPV
0 1 140
1 2 27
2 3 -150
...
现在这是一个示例,只是我数据的一小部分,但这应该可以说明我的观点。很明显,由于某种原因,NPV不能正确地求和。接下来,我尝试了这个:
EAD['SUM(NPV)'] = EAD.groupby('COUNTERPARTYNAME')['NPV'].transform('sum')
但这给了我相同的结果。我以为'NPV'仍然是字符串,所以我尝试了几种将其转换为整数的方法。
我在EAD ['SUM(NPV)']上方添加了一行:
EAD['NPV']=int(EAD['NPV']
但它声称TypeError:无法将系列转换为
我也尝试过:
EAD['NPV']=EAD['NPV'].astype(int).
但是那也不起作用,我真的很难理解我做错了什么。
TLDR;我不知道如何让Python正确执行数学运算。