Pandas如何拼接字典中存储的多个DataFrame并区分各列所属来源
Pandas多DataFrame拼接并标记列归属方案
这里有两种常用的实现方式,你可以根据自己的使用习惯选择:
方案1:给列名添加原DataFrame标识前缀
这个方案直接修改列名,后续使用不需要额外处理,列的归属一眼可辨。
示例代码:
import pandas as pd # 你的原始数据字典 df_dict = {'ox': dfox, 'dog': dfdog} processed_df_list = [] for df_name, df in df_dict.items(): # 给当前df的所有列加上 原名称_ 前缀 df = df.add_prefix(f"{df_name}_") processed_df_list.append(df) # 按列拼接所有处理后的df combined_df = pd.concat(processed_df_list, axis=1)
比如原ox下的height列会重命名为ox_height,原dog下的age列会重命名为dog_age。
方案2:使用多级列索引保留原列名
如果不希望修改原始列名,可以选择把原DataFrame的名称作为一级列索引,原列名作为二级索引。
示例代码:
import pandas as pd df_dict = {'ox': dfox, 'dog': dfdog} # 拼接时传入keys参数直接生成多级列索引 combined_df = pd.concat(df_dict.values(), axis=1, keys=df_dict.keys())
使用时可以直接通过一级索引取到对应原DataFrame的所有列,比如combined_df['ox']就能拿到原dfox的全部内容,combined_df['dog']['weight']就能取到原dfdog的weight列。
补充说明
如果需要仅保留两个DataFrame索引完全匹配的行,可以在pd.concat中添加参数join='inner'。
内容的提问来源于stack exchange,提问作者jr123456jr987654321
相关产品推荐
相关产品推荐

