【发布时间】:2018-06-14 13:48:03
【问题描述】:
我有以下数据框df1:
Date Invoice Name Price Coupon Location
0 2017-12-24 700349 John Doe 59.95 NONE VAGG1
1 2017-12-24 700347 Joe Smith 59.95 GBMR GG
2 2017-12-24 700345 Dave Johnson 35.00 CHANGE VAGG1
3 2017-12-24 700342 Sue Davis 35.00 GADSLR VAGG1
4 2017-12-23 700329 Betty Clark 84.95 GADSLR GG2
第二个数据框df2:
Date Invoice Name Price Coupon Location
0 2017-12-24 800349 John Doe 59.95 NONE VAGG1
1 2017-12-24 800347 Joe Smith 59.95 GBMR GG
2 2017-12-24 800345 John Doe 17.95 CHANGE VAGG1
3 2017-12-24 800342 John Doe 9.95 GADSLR VAGG1
4 2017-12-23 800329 Sue Simpson 34.95 GADSLR GG2
我想使用以下逻辑创建第三个数据框df3。
- 对于
df1中的每个名称,检查是否有匹配项。 - 如果有匹配,将匹配行从
df2添加到df3,提供 该行的价格与关联的价格不匹配 如果df1,则为该名称。
所以输出数据框df3 应该如下所示:
+------------+---------+----------+-------+--------+----------+
| Date | Invoice | Name | Price | Coupon | Location |
+------------+---------+----------+-------+--------+----------+
| 2017-12-24 | 800345 | John Doe | 17.95 | CHANGE | VAGG1 |
| 2017-12-24 | 800342 | John Doe | 9.95 | GADSLR | VAGG1 |
+------------+---------+----------+-------+--------+----------+
【问题讨论】:
-
匹配是否严格在
Name列上,而不是Invoice? -
@ako 是的,你是对的。仅在
Name上,不在Invoice上。 -
所以您要问,“对于 df2 中名称在 df1 中的任何行,如果价格与 df1 中的价格不同,则返回该行?”如果是这样,您可以合并 df1 和 df2,然后删除
Price_y==Price_x所在的行。 -
@ako,听起来不错。有没有机会发布那行代码作为答案?因为我还是不知道怎么写。
标签: python python-3.x pandas numpy scikit-learn