V.N*_*uri 2 python dictionary dataframe pandas
我有一个 Python 数据框和一个字典,如下所示,我需要根据字典过滤数据框。如您所见,字典的键和值是数据帧的两列。我想要一个数据帧的子集,其中包含字典的键和值以及其他列。
df:
| 客户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']
}
Run Code Online (Sandbox Code Playgroud)
我需要以下数据框:
| 客户ID | 类别 | 类型 | 送货 |
|---|---|---|---|
| 40275 | 书 | 买 | 真的 |
| 40275 | 软件 | 卖 | 错误的 |
| 39900 | 书 | 买 | 真的 |
| 35886 | 软件 | 卖 | 错误的 |
| 40350 | 软件 | 卖 | 真的 |
| 28129 | 软件 | 买 | 错误的 |
展平字典并创建一个新的数据框,然后merge df使用新的数据框进行内部处理
df.merge(pd.DataFrame([{'Customer_ID': k, 'Category': i}
for k, v in d.items() for i in v]))
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)