【发布时间】:2021-08-07 14:54:19
【问题描述】:
我有两个数据框 A 和 B。我想在数据框 B 中创建一个新列 'suggested_Vendor',其中包含基于某些检查的数据框 A 的相应映射:
- 添加数据框 A 中的第一个“suggested_Vendor”,数据框 B 的水果值与数据框 A 的“preferred_fruits”列表类型列之间存在任何匹配项。
- 如果不存在匹配项,则在数据帧 B 输出中将“suggested_Vendor”返回为“None”
- 如果 vendor_capacity 超过,则匹配数据框 A 中第二个最佳首选供应商的名称,依此类推。
- 两个数据帧中的 Id 、userid 之间没有关系
数据框 A
| Id | vendor_name| preferred_fruits |vendor_capacity|
| ---| -----------| --------------------------|---------------|
| 1 | X |['apple','orange','banana']|2 |
| 2 | Y |['kiwi'] |1 |
| 3 | Z |['banana','orange'] |1 |
| 4 | W |['apple'] |1 |
数据框 B
| userid | fruit |
| --- | -----------|
| 1 | apple |
| 2 | orange |
| 3 | apple |
| 4 | banana |
| 5 | kiwi |
| 6 | strawberry |
输出数据帧 B
| userid | fruit | suggested_Vendor|
| --- | -----------|-----------------|
| 1 | apple | X |
| 2 | orange | X |
| 3 | apple | W |
| 4 | banana | Z |
| 5 | kiwi | Y |
| 6 | strawberry | None |
任何pythonic方式。我希望能对代码进行一些解释。
【问题讨论】:
-
您将在用户 ID 4 处获得
X? -
没有 X 的供应商容量是 2 。这就是为什么第二个匹配在这里映射