Python合并columnrow中的值(单元格类型为list)

2024-04-19 20:39:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用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)

enter image description here

我现在要做的是合并每个单元格中的值,如果列表显示两个相同的值,如我的图像中的绿色箭头所示。你知道吗

所以,我试过这个:

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)

你认为这是个好习惯吗?我正在努力学习更多关于聚合技术的知识。你知道吗


Tags: lambdadfoneaggccccdf1printgroupby
1条回答
网友
1楼 · 发布于 2024-04-19 20:39:43

我要做的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]

相关问题 更多 >