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

能否将含多值单元格的DataFrame转换为值含列表的字典?

实现方法

完全可以实现,核心是先对CustRef列做格式转换,再生成目标字典,具体操作如下:

步骤1:处理CustRef列的格式

针对CustRef列的每个值做判断:

  • 若值包含逗号,按, 分割字符串,再将每个分割后的元素转为整数,组成列表
  • 若值不包含逗号,直接转为整数

步骤2:生成目标字典

将处理后的CustRef值与ID对应,用ID的字符串形式作为键,处理后的值作为值构建字典

完整代码示例

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'ID': [0, 1, 2],
    'CustRef': ['111', '222', '333, 444, 555, 666']
})

# 定义处理函数
def process_custref(val):
    if ', ' in val:
        return [int(x) for x in val.split(', ')]
    else:
        return int(val)

# 应用处理函数到CustRef列
df['processed_CustRef'] = df['CustRef'].apply(process_custref)

# 生成目标字典,将ID转为字符串类型
result_dict = {str(row['ID']): row['processed_CustRef'] for _, row in df.iterrows()}

print(result_dict)
# 输出:{'0': 111, '1': 222, '2': [333, 444, 555, 666]}

简化写法(用lambda表达式)

如果不想定义单独函数,也可以用lambda表达式简化处理步骤:

df['processed_CustRef'] = df['CustRef'].apply(
    lambda x: [int(i) for i in x.split(', ')] if ', ' in x else int(x)
)

result_dict = {str(k): v for k, v in df.set_index('ID')['processed_CustRef'].to_dict().items()}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:10:31