如何基于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新列,按以下步骤操作:
- 解析字符串格式的列表字典:
pn列存储的是字符串形式的列表字典,需要用ast.literal_eval将其转换为可操作的Python数据结构。 - 合并字典并提取目标值:每个
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
相关产品推荐
相关产品推荐

