提问者:小点点

过滤熊猫DF使用条件


我在过滤此pandas数据帧时遇到以下问题:

import pandas as pd

df1 = pd.DataFrame({'YEAR': [2020,2020,2019,2019, 2019,2020, 2020],'MONTH': [7,6,6,7, 2, 1, 2],'WEEK': [2,2,3,3, 2, 1, 2],'SALES': [45357, 30000, 2858, 10500, 3321, 23434, 2233]})

df1

我使用以下代码过滤数据帧:

df1[(df1['YEAR'] != 2020) & (df1['MONTH'] != 7)]

原来我只想去掉2020年和7个月的例子,结果只剩下2019年和6个月和8个月。 我做错了什么? 我是否需要创建一个包含月份和年份的新列?


共3个答案

匿名用户

要删除Year=2020Month=7,可以执行以下操作:

df1 = df1[~((df1['YEAR'] == 2020) & (df1['MONTH'] == 7))]

df1 = df1[(df1['YEAR'] != 2020) | (df1['MONTH'] != 7)]

匿名用户

这里的逻辑有点不对

df1[~((df1['YEAR'] == 2020) & (df1['MONTH'] == 7))]
   YEAR  MONTH  WEEK  SALES
1  2020      6     2  30000
2  2019      6     3   2858
3  2019      7     3  10500
4  2019      2     2   3321
5  2020      1     1  23434
6  2020      2     2   2233

或将&更改为

df1[(df1['YEAR'] != 2020) | (df1['MONTH'] != 7)]
   YEAR  MONTH  WEEK  SALES
1  2020      6     2  30000
2  2019      6     3   2858
3  2019      7     3  10500
4  2019      2     2   3321
5  2020      1     1  23434
6  2020      2     2   2233

匿名用户

对于月份部分,排除所有月份=7。 我认为将其更改为df1['month']==7将达到您的目的。