我有一个数据框df
,想获取每个课程的ID
列表:
import pandas as pd
list1 = [[1, ('A', 'B', 'C')], [2, ('M', 'E', 'F')], [3, ('H', 'A', 'D')], [4, ('H', 'A', 'D')]]
df = pd.DataFrame(list1, columns=['ID', 'Class'])
df
看起来像
ID Class
1 (A, B, C)
2 (M, E, F)
3 (H, A, D)
4 (H, A, D)
所需的输出是:
Class ID
(A, B, C) [1]
(M, E, F) [2]
(H, A, D) [3, 4]
我尝试使用下面的代码,但是它不起作用。谢谢。
df.groupby('Class')['ID'].aggregate(lambda x: list(x))
答案 0 :(得分:3)
您应该使用
df.groupby('Class').ID.agg(list).reset_index()
Out[473]:
Class ID
0 (A, B, C) [1]
1 (H, A, D) [3, 4]
2 (M, E, F) [2]
修复代码
df.groupby('Class')['ID'].aggregate(lambda x: x.tolist())
答案 1 :(得分:1)
这里有很多解决方案:
df = df.groupby('Class')['ID'].apply(list).reset_index()
Class ID
0 (A, B, C) [1]
1 (H, A, D) [3, 4]
2 (M, E, F) [2]