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

Python处理DataFrame含空值的合并列按空格拆分问题

PDF提取表格合并列拆分的空值错位解决方法

问题场景

从PDF提取表格时,原本的A、B、C三列被合并为一列,DataFrame中该合并列的数据如下:

import pandas as pd
df = pd.DataFrame({
    'A B C': ['A B C', '1 2 3', '6 3 5', '4 6', '3 5 3']
})
merged_col = 'A B C'

使用以下代码拆分时,多数情况正常,但遇到仅含两个值的行(如第三行'4 6')会出现错位:

s = merged_col.split(' ')[0]
t = merged_col.split(' ')[1]
u = merged_col.split(' ')[2]
df[s],df[t],df[u] = df[merged_col].str.rsplit(n=2, expand=True)

当前错误输出:

A,B,C
A,B,C
1,2,3
6,3,5
4,6,
3,5,3

期望正确输出(缺失值对应A列):

A,B,C
A,B,C
1,2,3
6,3,5
,4,6
3,5,3

解决方案

核心思路是:拆分每行后,对元素不足3个的行在左侧补空值,确保每行都对应A、B、C三列的位置,避免错位。

实现代码:

import pandas as pd
import numpy as np

# 拆分每行得到列表
split_rows = df[merged_col].str.split(' ', expand=False)
# 补全列表长度至3,左侧补NaN
filled_rows = split_rows.apply(lambda x: [np.nan]*(3 - len(x)) + x if len(x) < 3 else x)
# 转换为DataFrame并赋值给对应列
split_df = pd.DataFrame(filled_rows.tolist(), columns=[s, t, u])
df[s], df[t], df[u] = split_df[s], split_df[t], split_df[u]

执行后即可得到符合预期的拆分结果,空值会自动对应到缺失的A列位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:35:04