根据条件删除行

drop rows based on condition

我只想保留时间在同年 7 月 4 日到 5 月 24 日之间的行,所以我使用了以下代码:

def fix_time(data):
     12     data['timestamp'] = pd.to_datetime(data['timestamp'], format="%d-%m-%Y %H:%M:%S")
---> 13     indexNames = data[ (data['timestamp'] < '24-05-2021 00:00:00') & (data['timestamp'] > '05-07-2021 00:00:00') ].index
     14     data.drop(indexNames , inplace=True)
     15     return data

但它并没有像我想要的那样工作:当我使用 data['timestamp'].max() 时,我得到 2021-09-30,这是不正确的。

between 对此效果更好:

def fix_time(data):
    data['timestamp'] = pd.to_datetime(data['timestamp'], format="%d-%m-%Y %H:%M:%S")
    return data[data['timestamp'].between('2021-05-07', '2021-05-24')]

另请注意,在 pandas 中比较日期时,您 必须 使用日期的 ISO 格式,即,您必须编写 2021-05-24 00:00:00 (yyyy-mm-dd) 而不是 24-05-2021 00:00:00 (dd-mm-yyyy).