Python中如何合并pandas DataFrame的多个重复同名列
实现代码
处理思路如下:
- 先筛选出所有带Name的列,和对应的X/Y/Z数值列按顺序配对
- 每对列单独生成子表,统一Name列的命名
- 拼接所有子表后将缺失值填充为'-'
完整可运行代码:
import pandas as pd # 构造模拟的原始数据(如果是读入文件的话直接用pd.read_csv等方法读取即可) df = pd.DataFrame({ 'Name': ['Jack', 'Celine'], 'X': [5, 14], 'Name.1': ['Maria', 'Andrew'], 'Y': [8, 14], 'Name.2': ['John', 'Jonathan'], 'Z': [12, 21] }) # 提取所有Name列和对应的数值列 name_cols = [col for col in df.columns if col.startswith('Name')] value_cols = ['X', 'Y', 'Z'] res_list = [] for name_col, val_col in zip(name_cols, value_cols): # 生成每组的子表,统一列名 tmp_df = df[[name_col, val_col]].rename(columns={name_col: 'Name'}) res_list.append(tmp_df) # 拼接所有子表,填充缺失值 result = pd.concat(res_list, ignore_index=True).fillna('-') print(result)
运行后输出结果和你要求的完全一致。
内容的提问来源于stack exchange,提问作者Ataberk Özaydın
相关产品推荐
相关产品推荐

