You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas合并DataFrame列表时同名列未复用的问题求助

解决Pandas合并DataFrame时同名列未复用的问题

你的问题出在转置后的DataFrame列名是默认数字索引(0、1、2、3),而非你期望的Name列值。用pd.concat(axis=1)拼接时,只会按这些数字列名直接拼接,自然不会复用同名字段。

解决步骤

  • 对每个转置后的DataFrame,将第一行(原Name列内容)设为新列名
  • 剔除转置后的Name行,只保留Age行
  • 纵向合并处理后的DataFrame,此时相同列名会自动对齐,缺失值填充NaN

完整代码示例

import pandas as pd

data2 = {'Name': ['A', 'B', 'C', 'D'], 'Age': [20, 21, 19, 18]}
data3 = {'Name': ['B', 'C', 'D', 'E'], 'Age': [4, 6, 419, 128]}
data4 = {'Name': ['D', 'E', 'F', 'G'], 'Age': [205, 721, 196, 148]}

def process_df(df):
    # 转置DataFrame
    transposed = df.T
    # 将转置后的第一行(原Name列)设为列名
    transposed.columns = transposed.iloc[0]
    # 只保留Age行,删除Name行
    return transposed.iloc[1:]

# 处理每个原始DataFrame
df_list = [process_df(pd.DataFrame(data)) for data in [data2, data3, data4]]
# 纵向合并,自动对齐列名
test_merge = pd.concat(df_list, axis=0)

# 输出符合期望格式的结果
print("Name," + ",".join(test_merge.columns))
print(test_merge.to_csv(sep=',', na_rep='NaN', header=False))

输出结果

Name,A,B,C,D,E,F,G
Age,20,21,19,18,NaN,NaN,NaN
Age,NaN,4,6,419,128,NaN,NaN
Age,NaN,NaN,NaN,205,721,196,148

内容的提问来源于stack exchange,提问作者DeepLearner123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 03:05:13