首页 > 解决方案 > 如何根据字典键和值过滤熊猫数据框行?

问题描述

我在 Python 中有一个数据框和一个字典,如下所示,我需要根据字典过滤数据框。如您所见,字典的键和值是数据框的两列。我想要一个数据框的子集,其中包含字典的键和值以及其他列。

东风:

客户ID 类别 类型 送货
40275 真的
40275 软件 错误的
40275 电子游戏 错误的
40275 手机 错误的
39900 光盘/DVD 真的
39900 真的
39900 软件 真的
35886 手机 错误的
35886 电子游戏 错误的
35886 光盘/DVD 错误的
35886 软件 错误的
40350 软件 真的
28129 软件 错误的

字典是:

d = {
 40275: ['Book','Software'],
 39900: ['Book'],
 35886: ['Software'],
 40350: ['Software'],
 28129: ['Software']
 }

我需要以下数据框:

客户ID 类别 类型 送货
40275 真的
40275 软件 错误的
39900 真的
35886 软件 错误的
40350 软件 真的
28129 软件 错误的

标签: pythonpandasdataframedictionary

解决方案


展平字典并创建一个新的数据框,然后在内部merge df使用新的数据框

df.merge(pd.DataFrame([{'Customer_ID': k, 'Category': i} 
                       for k, v in d.items() for i in v]))

   Customer_ID  Category  Type  Delivery
0        40275      Book   Buy      True
1        40275  Software  Sell     False
2        39900      Book   Buy      True
3        35886  Software  Sell     False
4        40350  Software  Sell      True
5        28129  Software   Buy     False

推荐阅读