Python 合并列-行中的值(单元格类型为列表)

标签 python pandas lambda

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

您认为这是一个好的做法吗?我正在尝试了解有关聚合技术的更多信息。

最佳答案

我会做什么独特

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]

关于Python 合并列-行中的值(单元格类型为列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48611234/

相关文章:

python - Pandas-创建差异数矩阵

python - PySpark 在映射 lambda 中序列化 'self' 引用对象?

model-view-controller - MVC View : Type arguments Html helper DisplayFor cannot be inferred from the usage

python - 使用 SPHINX、FURO、AUTODOC 构建 html 文档。错误样式表

python - 以 3x3D 数组为索引的 numpy 直方图

python - Pandas 中的多个 AggFun

python - 使用 fillna、downcast 和 pandas

ruby-on-rails - Ruby lambda 执行与规范中的 should

python - 如何并行运行函数?

python - 包装用于Python的C代码的最优选方法是什么?