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

如何基于DataFrame现有列数据创建新列?附实操示例需求

解决方法

先看你的原始DataFrame:

import pandas as pd

a = [{'id': 1, 'name': 'AAA', 'pn':"[{'code_1': 'green'}, {'code_2': 'link'}, {'code_3': '10'}]"}, {'id': 2, 'name': 'BBB', 'pn': "[{'code_1': 'blue'}, {'code_2': 'link'}, {'code_3': '15'}]"}]
df = pd.DataFrame(a)
print(df)

原始数据输出:

id name                                                pn
0   1  AAA  [{'code_1': 'green'}, {'code_2': 'link'}, {'c...
1   2  BBB  [{'code_1': 'blue'}, {'code_2': 'link'}, {'co...

要生成color和link新列,按以下步骤操作:

  1. 解析字符串格式的列表字典:pn列存储的是字符串形式的列表字典,需要用ast.literal_eval将其转换为可操作的Python数据结构。
  2. 合并字典并提取目标值:每个pn对应的列表里是多个单键字典,将它们合并为完整字典后,直接提取code_1和code_2的值作为新列。

完整代码

import pandas as pd
import ast

# 解析pn列并提取目标值
df['color'] = df['pn'].apply(lambda x: {k: v for d in ast.literal_eval(x) for k, v in d.items()}['code_1'])
df['link'] = df['pn'].apply(lambda x: {k: v for d in ast.literal_eval(x) for k, v in d.items()}['code_2'])

# 可选:保留原始pn列或删除
# df = df.drop('pn', axis=1)

print(df)

运行后输出结果:

id name                                                pn  color   link
0   1  AAA  [{'code_1': 'green'}, {'code_2': 'link'}, {'c...  green  link
1   2  BBB  [{'code_1': 'blue'}, {'code_2': 'link'}, {'co...   blue  link

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 03:24:21