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

Pandas拆分字符串列到指定命名列时缺失值导致错位如何解决?

问题原因
  • 你原来的实现思路存在问题:str.split(expand=True) 是按拆分后元素的顺序返回列,和你指定的列名没有内容匹配关系,拆分后的第一个元素不管是什么都会赋值给第一个目标列blue,第二个元素赋值给red,以此类推,自然会出现错位。
  • 空字符串拆分后得到的第一个元素是空白值,所以索引5的blue列会填充空白而非None。
修复方案

可以直接用pandas内置的独热编码方法实现内容到列名的匹配,代码如下:

import pandas as pd

# 原数据
df = pd.DataFrame({
        'string': ['blue',
                   'blue,red',
                   'red',
                   'purple',
                   'blue,red,green,yellow,magenta,purple',
                   '',
                   'yellow,purple']})

# 定义目标颜色列顺序
target_colors = ['blue', 'red', 'green', 'yellow', 'magenta', 'purple']

# 生成独热编码后和列名相乘,匹配到的内容返回对应颜色名,未匹配返回空值,再替换空值为None
color_df = df['string'].str.get_dummies(sep=',').mul(target_colors).replace('', None)

# 按指定顺序赋值到原df
df[target_colors] = color_df[target_colors]
运行结果

最终得到的df符合预期:

stringblueredgreenyellowmagentapurple
blueblueNoneNoneNoneNoneNone
blue,redblueredNoneNoneNoneNone
redNoneredNoneNoneNoneNone
purpleNoneNoneNoneNoneNonepurple
blue,red,green,yellow,magenta,purpleblueredgreenyellowmagentapurple
NoneNoneNoneNoneNoneNone
yellow,purpleNoneNoneNoneyellowNonepurple

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:24:03