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

如何将值为非字符串对象的多值字典映射并拆分为多个Pandas列

解决方法

你只需要在map操作后追加.to_list(),一行代码即可完成需求:

import numpy as np
import pandas as pd

# 多值字典
d1 = {67045: np.array([20200911, 20201113, 20201230, np.nan, np.nan]),
    67046: np.array([20190909, 2020102, 20201230, 1, np.nan])}

# 带key的原始DataFrame
df = pd.DataFrame({'key': [67045, 67046]})

# 修正后的多列赋值代码
df[['c1', 'c2', 'c3', 'c4', 'c5']] = df['key'].map(d1).to_list()

运行后得到的结果和你预期的完全一致:

key        c1        c2        c3   c4  c5
0  67045  20200911  20201113  20201230  NaN NaN
1  67046  20190909   2020102  20201230  1.0 NaN

原代码失败原因

df['key'].map(d1)返回的是元素为numpy数组的一维Series,Pandas默认不会自动将数组元素拆分为多列,转为嵌套列表结构后,Pandas会自动将子列表的每个元素对应到目标列的每一行。


可选替代方案

如果需要单独处理展开后的列,可以先构造独立的展开DataFrame再拼接:

expand_df = pd.DataFrame(df['key'].map(d1).tolist(), 
                         columns=['c1','c2','c3','c4','c5'],
                         index=df.index)
df = pd.concat([df, expand_df], axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:24:02