Python中的Groupby函数未正确汇总

时间:2018-08-14 17:00:16

标签: python pandas

我正在使用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正确执行数学运算。

0 个答案:

没有答案