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

如何拆分Pandas DataFrame逗号分隔行,保留单行数据并解决NaN问题

问题原因

原代码失效的核心原因是:当From/To列的单元格为数值类型(而非字符串),或单元格值无逗号时,str.split(',')会返回NaN或非列表结构,后续explode操作直接将这些行转为NaN。

解决方案

1. 基础修复:避免NaN产生

先将列统一转为字符串类型,再用str.split(',', expand=False)拆分——该参数确保无逗号的单元格也返回包含单个元素的列表,从根源避免NaN:

# 转为字符串类型,消除数值类型导致的str操作异常
DT['From'] = DT['From'].astype(str)
DT['To'] = DT['To'].astype(str)

# 拆分列,确保所有单元格都是列表格式
DT['From'] = DT['From'].str.split(',', expand=False)
DT['To'] = DT['To'].str.split(',', expand=False)

# 展开行,保留单个值的行不变
DT = DT.explode(['From', 'To'], ignore_index=True)

2. 按需选择拆分逻辑

  • 一一对应拆分:如果From和To的多值是成对出现的(比如From="1,2"对应To="3,4",需拆成1→3、2→4),直接使用上面的explode(['From', 'To'])即可。
  • 笛卡尔积拆分:如果需要From的每个值分别匹配To的每个值,可按顺序展开:
DT = DT.explode('To', ignore_index=True).explode('From', ignore_index=True)

3. 可选:清理空白字符

若原数据中逗号后带空格(如"1, 2"),拆分后可清理元素前后空格:

DT['From'] = DT['From'].str.strip()
DT['To'] = DT['To'].str.strip()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 06:02:54