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

Pandas中使用apply拆分Series字符时如何跳过NaN值?

解决办法

1. 改造apply的lambda函数兼容NaN

你只需要在lambda里加个判断,遇到NaN时直接返回三个缺失值的Series,就能避免list(x)的报错:

import pandas as pd

# 假设你的原Series变量名为score_series
split_df = score_series.apply(
    lambda x: pd.Series(list(x)) if pd.notna(x) else pd.Series([pd.NA, pd.NA, pd.NA])
)
# 给列重命名成目标格式
split_df.columns = ['score_0', 'score_1', 'score_2']

2. 更高效的字符串拆分法(推荐给94万行的大数据)

apply处理百万级数据时效率偏低,用pandas内置的字符串方法会快很多,还能自动兼容NaN:

# 拆分字符并展开成列,拆分后首尾会有空字符串,所以取中间3列(索引1到3)
split_df = score_series.str.split('', expand=True).iloc[:, 1:4]
# 重命名列
split_df.columns = ['score_0', 'score_1', 'score_2']
# 把拆分产生的空字符串转为NaN
split_df = split_df.replace('', pd.NA)

两种方法都能得到你需要的结果,原Series中的NaN行会生成全NaN的对应列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 00:37:20