【发布时间】:2020-05-27 10:10:07
【问题描述】:
我有一个看起来像这样的数据框(10k~ 行)。我称之为 Maindf
+---+---------+----------+-------+--------------+
| | Product | Discount | Store | OtherColumns |
+---+---------+----------+-------+--------------+
| 0 | A | 0.5 | Red | |
| 1 | A | 1 | Red | |
| 2 | C | 3 | Green | |
| 3 | Z | 1.5 | Blue | |
| 4 | I | 0 | Red | |
| 5 | D | 0 | Green | |
+---+---------+----------+-------+--------------+
通过代码,我生成了这个其他数据帧(根据输入数据而变化)。我称之为Filterdf
+---+---------+----------+---------+
| | Product | Discount | Counter |
+---+---------+----------+---------+
| 0 | A | 0.5 | 1 |
| 1 | B | 2.0 | 2 |
| 2 | C | 1 | 9 |
| 3 | D | 0 | 7 |
+---+---------+----------+---------+
我正在尝试从 Maindf 返回与 Filterdf 列 Product 和 Discount 匹配的所有值。 所以预期的输出是这样的
+---+---------+----------+-------+--------------+
| | Product | Discount | Store | OtherColumns |
+---+---------+----------+-------+--------------+
| 0 | A | 0.5 | Red | |
| 1 | D | 0 | Green | |
+---+---------+----------+-------+--------------+
这是我的代码行,但运行不正常。
NewMaindf = Maindf[(Maindf['Product'].isin(Filterdf['Product']) & Maindf['Discount'].isin(Filterdf['Discount']))]
print(NewMaindf)
输出是这样的。我只对来自 Maindf 的与 Filterdf 的两列相匹配的数据感兴趣,在这种情况下,折扣为 1 的 A 正在通过,因为 A isin Filterdf['Product'] 和 1 isin Filterdf['Discount'] 但产品 C
+---+---------+----------+-------+--------------+
| | Product | Discount | Store | OtherColumns |
+---+---------+----------+-------+--------------+
| 0 | A | 0.5 | Red | |
| 1 | A | 1 | Red | |
| 2 | D | 0 | Green | |
+---+---------+----------+-------+--------------+
如何做到这一点? 第一次在这里发帖,谢谢,抱歉格式不好
【问题讨论】:
-
这能回答你的问题吗? Pandas Merging 101
标签: python pandas dataframe filter match