将相同大小的DataFrame合并为单个DataFrame
解决方法:合并同结构DataFrame为单元格含列表的新DataFrame
嘿,这个需求用pandas其实有很简便的实现方式,我来给你一步步拆解!
步骤1:导入库并准备示例数据
首先我们先模拟你提到的多个结构、大小一致的DataFrame:
import pandas as pd # 模拟两个测试用的DataFrame df1 = pd.DataFrame({ 'col1': [1, 1, 1], 'col2': [2, 2, 2], 'col3': [3, 3, 3] }) df2 = pd.DataFrame({ 'col1': [1, 1, 1], 'col2': [2, 2, 2], 'col3': [3, 3, 3] })
步骤2:通用合并方法(支持任意数量的DataFrame)
不管你有2个还是10个同结构的DataFrame,都可以用这个通用方法:
- 把所有DataFrame放到一个列表中
- 用
pd.concat堆叠所有DataFrame - 按原始行索引分组,将每组的元素聚合为列表
代码实现:
# 将所有需要合并的DataFrame存入列表 dfs = [df1, df2] # 执行合并操作 merged_df = pd.concat(dfs, axis=0).groupby(level=0).agg(list)
执行完后,merged_df的输出就是你想要的格式:
col1 col2 col3 0 [1, 1] [2, 2] [3, 3] 1 [1, 1] [2, 2] [3, 3] 2 [1, 1] [2, 2] [3, 3]
补充说明
- 确保所有要合并的DataFrame列名完全一致、行数完全相同,否则分组聚合会出现异常
- 如果你的DataFrame数量很少(比如只有2个),也可以用更简洁的逐列处理方式:
merged_df = df1.apply(lambda col: col.combine(df2[col.name], lambda x, y: [x, y]))
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

