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

如何将Pandas DataFrame列中的整数转换为列表?

解决Pandas列值转单元素列表且保留NaN的问题

我之前处理过类似的需求,给你几个实用的解决方案:

方法一:apply+lambda(直观易读)

这是最直接的实现方式,针对每个元素做判断:非NaN值包裹成单元素列表,NaN值原样保留:

import pandas as pd
import numpy as np

# 构造示例DataFrame
df = pd.DataFrame({'NUMBERS': [1, 2, np.nan, 4, np.nan]})

# 执行列转换
df['NUMBERS'] = df['NUMBERS'].apply(lambda x: [x] if pd.notna(x) else x)

执行后查看结果:

NUMBERS
0     [1]
1     [2]
2      NaN
3     [4]
4      NaN

方法二:np.where(大数据量更高效)

如果你的DataFrame行数很多,apply的逐元素操作可能有点慢,用np.where做向量化操作性能会更好:

df['NUMBERS'] = np.where(
    pd.notna(df['NUMBERS']),
    df['NUMBERS'].map(lambda x: [x]),
    df['NUMBERS']
)

这里用map替代apply,在元素级操作上性能略优,核心逻辑和方法一完全一致。

额外注意事项

如果你的列里存在字符串类型的'NaN'(不是标准的np.nan缺失值),建议先统一转换为标准缺失值,再执行上述操作:

# 将列转为数值型,非数值内容自动转为np.nan
df['NUMBERS'] = pd.to_numeric(df['NUMBERS'], errors='coerce')

这样能避免出现把字符串'NaN'转成['NaN']的错误情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:52:15