如何在pandas中的多个列上聚合?

时间:2016-04-04 12:24:15

标签: python pandas data-processing

现在我有一些数据如下所示:

    song_id                             artist_id                     0 days 1 days 2 days  
1   0919b5ed4ce2649f61bcc6c21fadab12    0c80008b0a28d356026f4b1097041689    0   0   0
2   8a0777df37bf6a0f3384d63a47d4d21b    0c80008b0a28d356026f4b1097041689    0   1   0
3   b61bc45712ee40c3f4a37dd4d063ad52    0c80008b0a28d356026f4b1097041689    0   0   0
4   a2fbe29da3a760d7467b8a7b3247a9c8    0c80008b0a28d356026f4b1097041689    0   0   1
5   b5e92cb9ff2126189c19305cf148b25d    0c80008b0a28d356026f4b1097041689    0   0   0

我想按照artist_id对它们进行分组,并在0 days1 days2 days上汇总总和,然后得到这样的结果。

        artist_id                      0 days 1 days 2 days
0       0c80008b0a28d356026f4b1097041689    0   1   1

我试过

df.groupby('artist_id').sum()

但它引发了错误。

TypeError: Cannot compare type 'Timedelta' with type 'str'

df.info显示:

<class 'pandas.core.frame.DataFrame'>
Int64Index: 10842 entries, 0 to 10841
Columns: 185 entries, song_id to 182 days 00:00:00
dtypes: float64(183), object(2)
memory usage: 15.4+ MB

如何使用熊猫的方式解决它?

欢迎任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用astype

df.columns = df.columns.astype(str)

答案 1 :(得分:0)

谢谢大家。

申请后

df.columns = map(str,df.columns)

步骤

df.groupby('artist_id').sum()

有效。