删除年份为 != Pandas 的所有行

Delete All Rows with Year != Pandas

我有一个巨大的熊猫 df,其中包含 1991-2021 年的每小时数据,我需要删除年份为 != 2021 或当前年份的所有行。在我的数据框中有一个“年”列,其中的年份从 1991 年到 2021 年不等,每小时数据。我在下面使用这行代码,但它似乎没有为数据帧 df1 做任何事情。有没有更好的方法来删除所有不等于 year == 2021 的行?:

trimmed_df1 = df1.drop(df1[df1.year != '2021'].index)

我的数据是 4532472 X 10 列 df,格式如下:

df1.columns.values
Out[20]: 
array(['plant_name', 'business_name', 'business_code',
   'maint_region_name', 'power_kwh', 'wind_speed_ms', 'mos_time',
   'dataset', 'month', 'year'], dtype=object)

为什么不使用 .loc[] 调用 select 您想要的行而不是删除行?

trimmed_df1 = df1.loc[df1.year == '2021']

这应该可以完成工作:

>>> trimmed_df1 = df1.query(‘year != 2021’).reset_index()

也许您甚至不需要重置索引 - 这取决于您。