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

Pandas技术实现:按*拆分字符串列并更新列替换NaN

解决Pandas中按*拆分字符串列并更新相邻NaN列的问题

直接上能实现需求的完整代码,之后再拆解每一步的逻辑:

import pandas as pd
import numpy as np

# 构建原始数据
df = pd.DataFrame.from_dict({
    '0': {'158': 'QRE', '159': 'AAA*XCN', '160': 'JJJJ'},
    '1': {'158': 'ABC', '159': np.nan, '160': np.nan},
    '2': {'158': 931, '159': 88, '160': 0},
})

# 核心处理流程
# 1. 对列'0'按*拆分,生成两列新数据
split_result = df['0'].str.split('*', expand=True)
# 2. 将拆分后的左侧内容替换回原列'0'
df['0'] = split_result[0]
# 3. 仅用拆分后的右侧内容填充列'1'中的NaN值,保留原有非NaN数据
df['1'] = df['1'].fillna(split_result[1])

print(df)

运行后得到的结果完全符合预期:

0    1    2
158  QRE  ABC  931
159  AAA  XCN   88
160 JJJJ  NaN    0

步骤细节解释

  • 拆分字符串列:str.split('*', expand=True)会把列'0'里带*的内容拆成左右两部分,没有*的行,拆分后的第二列会自动填充NaN,完美适配不同格式的行数据。
  • 更新原列内容:把拆分后的左侧部分重新赋值给列'0',直接替换掉原来带*的字符串。
  • 精准填充NaN:使用fillna()方法只针对列'1'中原有的NaN值进行填充,不会改动已经有值的行(比如行158的'ABC'会被完整保留),拆分后没有右侧内容的行也会保持NaN状态。

这个逻辑能适配更复杂的数据集,只要是需要按指定分隔符拆分列、并仅更新目标列NaN值的场景都能直接复用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:40:31