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

如何基于含多值的字典为Pandas DataFrame生成指定格式的新列?

解决方案

你的问题核心是字典里的单个字符串会被当成字符序列拆分,得先把字典所有值统一成列表格式再处理,以下是两种符合需求的实现方式:

方案一:拆分至多列,空白填充

先把字典里的单个字符串转成单元素列表,再映射拆分列:

import pandas as pd

data = ['One', 'Two', 'Three', 'Four']
df = pd.DataFrame(data, columns=['Count'])
dictionary = {'One':'Red', 'Two':['Red', 'Blue'], 'Three':'Green','Four':['Green','Red', 'Blue']}

# 统一字典值格式:单个字符串转成单元素列表
processed_dict = {k: [v] if isinstance(v, str) else v for k, v in dictionary.items()}

# 映射后拆分多列,空值用空白填充
expanded_cols = df['Count'].map(processed_dict).apply(pd.Series).fillna('')

# 和原表拼接,给新列命名
result = pd.concat([df, expanded_cols], axis=1)
result.columns = ['Count'] + [f'Color_{i+1}' for i in range(expanded_cols.shape[1])]

print(result)

运行后输出:

Count Color_1 Color_2 Color_3
0    One     Red                
1    Two     Red    Blue        
2  Three   Green                
3   Four   Green     Red    Blue

方案二:逗号分隔存入单列

同样先统一格式,再把列表转成逗号分隔的字符串:

import pandas as pd

data = ['One', 'Two', 'Three', 'Four']
df = pd.DataFrame(data, columns=['Count'])
dictionary = {'One':'Red', 'Two':['Red', 'Blue'], 'Three':'Green','Four':['Green','Red', 'Blue']}

# 直接生成逗号分隔的单列
df['Colors'] = df['Count'].map(
    lambda x: ', '.join([dictionary[x]] if isinstance(dictionary[x], str) else dictionary[x])
)

print(df)

运行后输出:

Count               Colors
0    One                   Red
1    Two            Red, Blue
2  Three                 Green
3   Four  Green, Red, Blue

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:03:12