在熊猫数据框中汇总具有相同字符串ID的列

时间:2020-09-09 17:38:44

标签: python pandas dataframe aggregate concat

我敢肯定有一种很好的方法可以使用熊猫来做到这一点,但是我一直围着圈跑。

我想对具有相同ID号的列中的值求和。

示例df:

ID_number  Billed  Paid  Balance
A100       300     20    280
A100       1000    1000  0
B9B6       1200    0     1200
B9B6       200     40    160

我在输出中寻找的东西

ID_number  Billed  Paid  Balance
A100       1300    1020  280
B9B6       1400    40    1360

困扰我的是ID号同时包含字母和数字。

我尝试将数据框一分为二,并将Billed,Paid和Balance列更改为int值,以便可以对其进行求和,但是我需要按索引号将它们分组才能将它们求和。无论我如何对数据帧进行切片和切块,当我再次将它们连接在一起时,它都会以“对象”类型和我的对象编号像字符串一样被粉碎在一起,而不是像int值那样被添加在一起。

我也尝试更改单个列的数据类型,但由于某些数字在十进制上相当长,因此无法正常工作,并且返回了此错误:ValueError: invalid literal for int() with base 10:

我一直在尝试使用df.groupby(['ID_number'].agg('sum')函数进行汇总。

有人知道该怎么做吗?

3 个答案:

答案 0 :(得分:0)

您在这里:

df.groupby('ID_number').sum()

答案 1 :(得分:0)

 df.groupby(['ID_number']).sum()

答案 2 :(得分:0)

编辑:现在我已经看到您没有索引列,请尝试以下操作:

index_list = pd.Index.tolist(df.ID_number)

尝试这个:

index_list = pd.Index.tolist(df.index)
df.groupby(index_list).sum()

它将索引列转换为列表,然后在groupby函数中使用它。 希望这能解决您的问题。

相关问题