Pandas GroupBy汇总连接数而不是总结它们

时间:2017-08-24 14:14:40

标签: python pandas dataframe group-by pandas-groupby

当我使用以下代码时:

    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

sum函数未正确完成,因为value列(col 3)返回值的连接字符串(308.02127.37),而不是保持各个值的完整性以允许操作。

1 个答案:

答案 0 :(得分:5)

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

此外,尽量不要对列进行硬编码。您可以使用.astypepd.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()
)