我在过滤此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个月。 我做错了什么? 我是否需要创建一个包含月份和年份的新列?
要删除Year=2020
和Month=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
将达到您的目的。