看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
我们要实现一个这样的需求,为每个 item 物品的“Related Items”创建一个字典,字典中的键是相关物品的名称,值是对应相关物品的“Quantity”。
构造数据如下:
import pandas as pd
data = {'Item': ['Flowers', 'Bushes', 'Cars', 'Trucks', 'Motorcycles'],
'Quantity': [1, 2, 3, 4, 5],
'Related Items': [['Bushes'],
['Flowers'],
['Trucks', 'Motorcycles'],
['Cars', 'Motorcycles'],
['Cars', 'Trucks']]
}
df = pd.DataFrame(data)
df
'''
Item Quantity Related Items
0 Flowers 1 [Bushes]
1 Bushes 2 [Flowers]
2 Cars 3 [Trucks, Motorcycles]
3 Trucks 4 [Cars, Motorcycles]
4 Motorcycles 5 [Cars, Trucks]
'''
得到的结果应该是:
'''
{'Bushes': 2}
{'Flowers': 1}
{'Trucks': 4, 'Motorcycles': 5}
{'Cars': 3, 'Motorcycles': 5}
{'Cars': 3, 'Trucks': 4}
'''
我们分析一下。对于Flowers,它的相关物品是Bushes,所以生成的字典是{'Bushes': 2}。对于Cars,它的相关物品是Trucks和Motorcycles,所以生成的字典是{'Trucks': 4, 'Motorcycles': 5}。
使用map函数对Related Items列中的每个列表进行处理。对于每个列表中的相关物品,通过 df.set_index('Item').at[i, 'Quantity']
获取相关物品的 Quantity 值。
最终生成一个字典,键是相关物品的名称,值是对应物品的 Quantity。
最终的代码如下:
df['Related Items'].map(lambda x: {i: df.set_index('Item').at[i, 'Quantity'] for i in x})
'''
0 {'Bushes': 2}
1 {'Flowers': 1}
2 {'Trucks': 4, 'Motorcycles': 5}
3 {'Cars': 3, 'Motorcycles': 5}
4 {'Cars': 3, 'Trucks': 4}
Name: Related Items, dtype: object
'''
这样就完成了这个需求。
(完)
更新时间:2025-02-16 13:32:17 标签:pandas python 字典