如何聚合 pandas 中的多个列?
How can I aggregate on multiple columns in pandas?
现在我有一些数据如下所示:
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 days
、 1 days
和 2 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
如何用pandas的方式解决?
欢迎任何帮助。
您可以使用 astype
:
df.columns = df.columns.astype(str)
谢谢大家。
申请后
df.columns = map(str,df.columns)
步骤
df.groupby('artist_id').sum()
有效。
现在我有一些数据如下所示:
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 days
、 1 days
和 2 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
如何用pandas的方式解决?
欢迎任何帮助。
您可以使用 astype
:
df.columns = df.columns.astype(str)
谢谢大家。
申请后
df.columns = map(str,df.columns)
步骤
df.groupby('artist_id').sum()
有效。