Skip to main content
 首页 » 编程设计

python之Pandas GroupBy sum 连接数字而不是对它们求和

2025年05月04日13tintown

当我使用下面的代码时:

    print(self.df.groupby(by=[2])[3].agg(['sum'])) 

在以下数据框上:

            0    1        2        3       4     5     6     7 
0          15  LCU   Test 1   308.02  170703  ALCU  4868  MS10 
1          16  LCU   Test 2   127.37  170703  ALCU  4868  MS10 

求和函数未正确完成,因为值列(第 3 列)返回值的串联字符串 (308.02127.37),而不是维护各个值的完整性以允许操作。

请您参考如下方法:

您的第 3 列似乎是一个字符串。您是否使用 dtype=str 加载了数据框?

此外,尽量不要对您的列进行硬编码。您可以使用 .astype 或 pd.to_numeric 进行转换,然后应用 sum:

self.df.groupby(self.df.columns[2])[self.df.columns[3]].agg( 
    lambda x: pd.to_numeric(x, errors='coerce').sum() 
) 

或者

self.df.groupby(self.df.columns[2])[self.df.columns[3]].agg( 
    lambda x: x.astype(float).sum() 
)