我使用python将数据聚合为测试。对于每个columnA值,我希望有一行包含columnB和columnC中的值。在完成该工作并从stackoverflow获取建议后,该工作正常:
df = pd.DataFrame({'columnA':[1111,1111,2222,3333,4444,4444,5555,6666],
'columnB':['AAAA','AAAA','BBBB','BBBB','CCCC','CCCC','BBBB','CCCC'],
'columnC':['one','two','one','one','one','one','two','one'],
'NUM1':[1,3,5,7,1,0,4,5],
'NUM2':[5,3,6,9,2,4,1,1],
'W':list('aaabbbbb')})
d = {'columnB':lambda x: x.tolist(), 'columnC':lambda x: x.tolist() }
df1 = df.groupby('columnA').agg(d)
print(df1)
我现在要做的是合并每个单元格中的值,如果列表显示两个相同的值,如图中绿色箭头所示。
所以,我试过这个:
d = {'columnB':lambda x: set(x.tolist()), 'columnC':lambda x: x.tolist() }
df1 = df.groupby('columnA').agg(d)
print(df1)
但我不确定列值的格式。我正在考虑将列再次转换为列表:
d = {'columnB':lambda x: list(set(x.tolist())), 'columnC':lambda x: x.tolist() }
df1 = df.groupby('columnA').agg(d)
print(df1)
你认为这是一个好习惯吗?我想了解有关聚合技术的更多信息。
答案 0 :(得分:3)
我会做什么unique
d = {'columnB':'unique', 'columnC':'unique' }
df1 = df.groupby('columnA').agg(d)
df1
Out[573]:
columnB columnC
columnA
1111 [AAAA] [one, two]
2222 [BBBB] [one]
3333 [BBBB] [one]
4444 [CCCC] [one]
5555 [BBBB] [two]
6666 [CCCC] [one]