Han*_*ana 4 python dataframe pandas
我是 Pandas 的新手,我正在尝试弄清楚这种情况:我有一个包含两个产品的示例 DataFrame。df =
Product_Num Date Description Price
10 1-1-18 Fruit Snacks 2.99
10 1-2-18 Fruit Snacks 2.99
10 1-5-18 Fruit Snacks 1.99
10 1-8-18 Fruit Snacks 1.99
10 1-10-18 Fruit Snacks 2.99
45 1-1-18 Apples 2.99
45 1-3-18 Apples 2.99
45 1-5-18 Apples 2.99
45 1-9-18 Apples 1.49
45 1-10-18 Apples 1.49
45 1-13-18 Apples 1.49
45 1-15-18 Apples 2.99
Run Code Online (Sandbox Code Playgroud)
我还有另一个看起来像这样的小 DataFrame(显示相同产品的促销价格):df2=
Product_Num Price
10 1.99
45 1.49
Run Code Online (Sandbox Code Playgroud)
请注意,df2 不包含“日期”和“说明”列。我想要做的是使用 df1 中的数据从 df1 中删除所有促销价格(对于促销中的所有日期)。做这个的最好方式是什么?
所以,我想看看这个:
Product_Num Date Description Price
10 1-1-18 Fruit Snacks 2.99
10 1-2-18 Fruit Snacks 2.99
10 1-10-18 Fruit Snacks 2.99
45 1-1-18 Apples 2.99
45 1-3-18 Apples 2.99
45 1-5-18 Apples 2.99
45 1-15-18 Apples 2.99
Run Code Online (Sandbox Code Playgroud)
我正在考虑对列 Price 和 Product_Num 进行合并,然后看看我能从那里做些什么。但是我因为多个日期而感到困惑。
isin
和 &
df.loc[~((df.Product_Num.isin(df2['Product_Num']))&(df.Price.isin(df2['Price']))),:]
Out[246]:
Product_Num Date Description Price
0 10 1-1-18 FruitSnacks 2.99
1 10 1-2-18 FruitSnacks 2.99
4 10 1-10-18 FruitSnacks 2.99
5 45 1-1-18 Apples 2.99
6 45 1-3-18 Apples 2.99
7 45 1-5-18 Apples 2.99
11 45 1-15-18 Apples 2.99
Run Code Online (Sandbox Code Playgroud)
更新
df.loc[~df.index.isin(df.merge(df2.assign(a='key'),how='left').dropna().index)]
Out[260]:
Product_Num Date Description Price
0 10 1-1-18 FruitSnacks 2.99
1 10 1-2-18 FruitSnacks 2.99
4 10 1-10-18 FruitSnacks 2.99
5 45 1-1-18 Apples 2.99
6 45 1-3-18 Apples 2.99
7 45 1-5-18 Apples 2.99
11 45 1-15-18 Apples 2.99
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9780 次 |
最近记录: |