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

如何用非规整列数的空格分隔CSV填充指定表头的空Pandas DataFrame

解决方案

核心逻辑

读取File2后,只保留与File1目标表头重叠的列,再将筛选后的数据填充到目标表中,彻底忽略多余列。

修正后的代码示例

import pandas as pd

# 定义目标表头(与File1一致)
target_columns = ['item', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
# 读取空的目标表File1
df_target = pd.DataFrame(columns=target_columns)

# 读取列数不均的空格分隔文件File2
df_source = pd.read_csv('File2.csv', sep=r'\s+')

# 关键:筛选出File2中与目标表头匹配的列,自动丢弃多余列
filtered_source = df_source[df_source.columns.intersection(target_columns)]

# 将筛选后的数据填充到目标表
df_final = pd.concat([df_target, filtered_source], ignore_index=True)

# 保存填充后的结果(可选)
df_final.to_csv('File1_filled.csv', index=False)

特殊场景处理

  • 表头大小写不匹配:如果File2表头和目标表头存在大小写差异,先统一格式再筛选:
    # 统一为小写
    df_source.columns = df_source.columns.str.lower()
    target_cols_lower = [col.lower() for col in target_columns]
    filtered_source = df_source[df_source.columns.intersection(target_cols_lower)]
    # 恢复目标表头格式
    filtered_source.columns = [col for col in target_columns if col.lower() in filtered_source.columns]
    
  • File2无表头:若File2第一行就是数据,需先指定临时表头再筛选:
    # 给File2临时加表头,多余列用占位符命名
    df_source = pd.read_csv('File2.csv', sep=r'\s+', names=target_columns + [f'extra_{i}' for i in range(10)])
    filtered_source = df_source[df_source.columns.intersection(target_columns)]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:27:08