pandas - Pandas - 合并包含列表的行
问题描述
我想合并行(某种分组依据),但也合并它们的列数据,在我的例子中由一个列表组成。
例如,我的数据如下所示:
Col1 Col2
a [1,2,3]
a [3,4,5]
b [1,2,3,4,20]
b [3,80,4,5]
结果数据框将是:
Col1 Col2
a [1,2,3,4,5]
b [1,2,3,4,20,80,5]
解决方案
您可以使用groupby
df = pd.DataFrame({'col1': ['a','a','b','b'], 'col2': [[1,2,3], [3,4,5],[1,2,3,4,20], [3,80,4,5]]})
print(df.groupby('col1').sum())
输出:
col2
col1
a [1, 2, 3, 3, 4, 5]
b [1, 2, 3, 4, 20, 3, 80, 4, 5]
如果只需要考虑一次重复值,则可以通过以下两种方式完成:
1)使用 Set()
print(df.groupby('col1').sum()['col2'].apply(lambda x: list(set(x))).reset_index())
输出:
col1 col2
0 a [1, 2, 3, 4, 5]
1 b [1, 2, 3, 4, 5, 80, 20]
2)通过使用 dict.fromkeys():这将有助于保持列表中元素的顺序:
print(df.groupby('col1').sum()['col2'].apply(lambda x: list(dict.fromkeys(x))).reset_index())
输出:
col1 col2
0 a [1, 2, 3, 4, 5]
1 b [1, 2, 3, 4, 20, 80, 5]
推荐阅读
- c++ - Stack Gotoxy 面向对象
- python - Alembic 在迁移过程中执行 SQL
- sql - SQL Server 2016 - 如何做一个简单的数据透视
- html - 添加新消息时聊天应用程序不滚动
- kubernetes - Kubernetes 删除由 hostPath 创建的 Persistent Voulmes
- html - 信封联系表格响应问题
- github - 我如何知道在 github 操作中运行工作流的总时间?
- python - 如何对 JSON 进行排序?
- docker - 无法使用云构建上传非图像工件
- elasticsearch - Kibana 管理中未显示索引模式