Pandas: Merging/Organizing 表进入新 table

Pandas: Merging/Organizing Tables into a new table

在 pandas 中 merge/consolidate 多个 table 的最佳方法是什么?为简单起见,假设我们有 3 个简单的 table 作为数据框,如下所示:

表 1

AA_max    55
AA_min    40
BB_max    23
BB_min    10

表 2

AA_max    55
AA_min    40

表 3

AA_max    85
AA_min    10
BB_max    23
BB_min    10

如何生成合并的 table,如下所示:

Item | Table1 min | Table1 max | Table2 min | Table2 max | Table3 min | Table3 max
AA     40           55           40           55           10           85          
BB     10           23                                     10           23

使用pandas是否可行?如果不是,是否最好只迭代每个 table 的每一行,插入字典并在迭代时相应地填充列?

假设来自另一个 table 的项目可能存在也可能不存在于其他 table 中。

解决方案

  • Concat 沿列轴的表格
  • Split 索引以转换为 multiindex
  • Unstack 级别=1 重塑
  • 使用 mapjoin
  • 展平多级列
tables = [df1, df2, df3]
out = pd.concat({f'Table_{i}': df.set_index('name')['val'] 
                 for i, df in enumerate(tables, 1)}, axis=1)

out.index = out.index.str.split('_', expand=True)
out = out.unstack()
out.columns = out.columns.map('_'.join)

结果

print(out)

    Table_1_max  Table_1_min  Table_2_max  Table_2_min  Table_3_max  Table_3_min
AA           55           40         55.0         40.0           85           10
BB           23           10          NaN          NaN           23           10