繁体   English   中英

Python:使用来自另一个 CSV 的条件过滤 CSV

[英]Python: Filtering CSV with conditions from another CSV

我正在尝试使用 Pandas 编写 Python 代码以过滤掉 CSV 文件,具体取决于从另一个 CSV 文件设置的条件。

我要过滤的 CSV 看起来像这样:

date              product
01/05/2020        Test Product 1
02/05/2020        Test Product 1
03/05/2020        Test Product 1
04/05/2020        Test Product 1
05/05/2020        Test Product 1
06/05/2020        Test Product 1
07/05/2020        Test Product 1
01/05/2020        Test Product 2
02/05/2020        Test Product 2
03/05/2020        Test Product 2
04/05/2020        Test Product 2
05/05/2020        Test Product 2
06/05/2020        Test Product 2
07/05/2020        Test Product 2

CSV 的条件如下:

product               start_date
Test Product 1        01/05/2020
Test Product 2        04/05/2020

我要做的是过滤第一个 CSV 以便任何在 01/05 之后具有 start_date 的测试产品都将删除相关行。 例如,测试产品 2 的 start_date 为 04/05/2020,这意味着在第一个 CSV 中,我试图删除该产品的 01/05、02/05 和 03/05 的行。

这将是所需的 output:

    date              product
01/05/2020        Test Product 1
02/05/2020        Test Product 1
03/05/2020        Test Product 1
04/05/2020        Test Product 1
05/05/2020        Test Product 1
06/05/2020        Test Product 1
07/05/2020        Test Product 1
04/05/2020        Test Product 2
05/05/2020        Test Product 2
06/05/2020        Test Product 2
07/05/2020        Test Product 2

最好的方法是什么? 很长一段时间以来,我一直在尝试以多种方式使用数据框,但还没有找到任何正确的脚本......

提前谢谢了!

我们可以使用boolean indexingSeries.map

df_filtered = df1.loc[df1['date'].ge(df1['product']\
                                     .map(df2.set_index('product')['start_date']))]
print(df_filtered)
          date         product
0   01/05/2020  Test Product 1
1   02/05/2020  Test Product 1
2   03/05/2020  Test Product 1
3   04/05/2020  Test Product 1
4   05/05/2020  Test Product 1
5   06/05/2020  Test Product 1
6   07/05/2020  Test Product 1
10  04/05/2020  Test Product 2
11  05/05/2020  Test Product 2
12  06/05/2020  Test Product 2
13  07/05/2020  Test Product 2

为了读取您的 csv 文件,我们使用pd.read_csv

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM