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

如何在Pandas中合并拆分列名并删除全NaN列

问题描述

使用pd.read_fwf('./temp.txt', colspecs='infer')读取包含空格列名的固定宽度文件时,原本带空格的列名(如Field Name)被错误拆分为多列,其中拆分出的列全为NaN值。需要实现:删除所有全NaN列,并将其列名合并到前一列的列名中,修正被错误拆分的原列名。

示例输入数据:

Type Dec LookupTable               Field Name                Field Len Start Pos
NUM  0   _                         sample data               5         1
NUM  0   _                         sample data               10        6
CHAR 0   _                         sample data               60        16
NUM  0   _                         sample data               3         76
CHAR 0   _                         sample data               60        79
CHAR 0   _                         sample data               60        139
CHAR 0   _                         sample data               60        199
CHAR 0   _                         sample data               60        259
NUM  0   _                         sample data               3         319
CHAR 0   _                         sample data               60        322
CHAR 0   _                         sample data               60        382
NUM  0   _                         sample data               3         442
CHAR 0   _                         sample data               60        445
高效实现方案

步骤说明

  1. 定位所有全NaN的列
  2. 从后往前遍历这些列(避免修改列名后索引混乱)
  3. 将当前NaN列的列名合并到前一列的列名中
  4. 删除当前NaN列

代码实现

import pandas as pd

# 读取数据(用户已执行的步骤)
df = pd.read_fwf('./temp.txt', colspecs='infer')

# 找出所有全NaN的列
nan_cols = df.columns[df.isna().all()]

# 从后往前遍历,避免列索引变动影响后续操作
for col in reversed(nan_cols):
    # 获取前一列的索引和列名
    prev_col_idx = df.columns.get_loc(col) - 1
    prev_col = df.columns[prev_col_idx]
    # 合并列名
    df.rename(columns={prev_col: f"{prev_col} {col}"}, inplace=True)
    # 删除当前全NaN列
    df.drop(col, axis=1, inplace=True)

# 查看处理后的结果
print(df.columns)
print(df.head())

关键细节

  • 从后往前遍历:如果先处理靠前的NaN列,后续列的索引会因删除操作发生变化,导致定位前一列出错;从后往前遍历则不会有这个问题。
  • 列名合并逻辑:直接将NaN列的列名拼接在前一列列名后,还原原本带空格的列名(如Field + Name → Field Name)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:05:14