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

如何处理含NaN值的DataFrame列表列拆分并保留日期数据

处理含NaN的列表列并拆分出A、B列

步骤说明

  1. 替换NaN值:先将Value列中的NaN替换为[0,0],避免拆分时抛出异常
  2. 拆分列表列:将处理后的Value列拆分为A、B两列
  3. 合并结果:将拆分出的列与原DataFrame合并,保留所有原始列

完整代码示例

import pandas as pd
import numpy as np

# 构造示例数据(模拟你的原始DataFrame)
df = pd.DataFrame({
    'Date': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04'],
    'Value': [[1,2], [3,4], np.nan, [5,6]]
})

# 替换Value列的NaN为[0,0]
df['Value'] = df['Value'].apply(lambda x: x if pd.notna(x) else [0,0])

# 拆分列表为A、B列
split_df = pd.DataFrame(df['Value'].tolist(), index=df.index, columns=['A', 'B'])

# 合并得到最终DataFrame
final_df = pd.concat([df, split_df], axis=1)

# 查看结果
print(final_df)

输出结果

Date    Value  A  B
0  2023-01-01  [1, 2]  1  2
1  2023-01-02  [3, 4]  3  4
2  2023-01-03  [0, 0]  0  0
3  2023-01-04  [5, 6]  5  6

替代简化写法

如果不想单独修改Value列,可以直接在拆分时完成替换:

split_df = pd.DataFrame(
    df['Value'].apply(lambda x: x if pd.notna(x) else [0,0]).tolist(),
    index=df.index,
    columns=['A', 'B']
)
final_df = pd.concat([df, split_df], axis=1)

这样处理后,既保留了所有日期数据,又完成了列表拆分,同时将原NaN对应的A、B值设为0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:45:48