Pandas:从字典列与收入列生成新字典列表
在Pandas中转换字典列表格式的解决方案
假设你的DataFrame结构如下(方便后续代码演示):
import pandas as pd sample_data = { "ID_Name": [ [{'id': 10, 'name': 'Anna'}, {'id': 15, 'name': 'Bob'}, {'id': 20, 'name': 'Charlie'}, {'id': 25, 'name': 'Donald'}] ], "AVG_INCOME": [100000] } df = pd.DataFrame(sample_data)
要生成你需要的[{name: income}, ...]格式的列表,我们可以用Pandas的apply方法逐行处理数据,核心逻辑是遍历ID_Name中的每个字典,提取name字段并与当前行的AVG_INCOME配对成新字典,最后将这些字典组合成列表。
方法一:自定义函数(可读性更高)
def transform_row(row): # 遍历每个字典,生成{name: 收入字符串}的结构 return [{item['name']: str(row['AVG_INCOME'])} for item in row['ID_Name']] # 应用函数到每一行,生成新列 df['TARGET_COLUMN'] = df.apply(transform_row, axis=1)
方法二:Lambda表达式(更简洁)
如果想少写几行代码,用lambda表达式也能实现同样效果:
df['TARGET_COLUMN'] = df.apply( lambda row: [{item['name']: str(row['AVG_INCOME'])} for item in row['ID_Name']], axis=1 )
执行完上述代码后,TARGET_COLUMN列的内容就是你想要的结果:
[{'Anna': '100000'}, {'Bob': '100000'}, {'Charlie': '100000'}, {'Donald': '100000'}]
小提示
- 示例中把
AVG_INCOME转成字符串是因为你给出的目标格式里收入是字符串类型,如果不需要可以去掉str(),直接用row['AVG_INCOME']。 - 如果你的DataFrame有多行数据,这个方法会自动处理每一行的对应
ID_Name和AVG_INCOME,完全适配批量场景。
内容的提问来源于stack exchange,提问作者beluga217
相关产品推荐
相关产品推荐

