2

使用 python 3.7、熊猫 1.1.1

我有 datetimeindex 和 date_list =["2020-07-19", "2020-07-24", ... 等列表的数据框

我想删除我的数据框中包含 date_list 中日期的所有行。

我的 datetimeindex 也包含各种 hh:mm:ss 并且无论它的日期是否在 date_list 中,我都想删除它

数据框如下所示:

      time              data
2020-07-19 23:52:02       1
2020-07-20 13:44:02       1
2020-07-22 23:52:02       1
2020-07-24 08:52:02       1
2020-07-24 21:52:02       1

所需的输出将是:

      time              data
2020-07-20 13:44:02       1
2020-07-22 23:52:02       1

删除 date_list 中的日期

以下如何删除 Pandas 数据框中特定日期的行? 我试过df.drop(pd.to_datetime("2020-07-19"))哪个给KeyError: "[Timestamp('2020-07-19 00:00:00')] not found in axis"

如何在不考虑时间的情况下删除日期?

4

3 回答 3

3

由于您time的日期不准确00:00:00,您可以使用它normalize()来提取日期。然后你可以使用isin

date_list = pd.to_datetime(date_list)

df[~df['time'].dt.normalize().isin(date_list)]

如果time是索引:

df[~df.index.normalize().isin(date_list)]
于 2020-09-15T02:09:51.187 回答
2

查看

df[~df.index.to_series().dt.date.isin(date_list)]
于 2020-09-15T02:11:18.683 回答
0

或使用str.contains

df[~df["time"].str.contains('|'.join(date_list))]
于 2020-09-15T02:35:49.277 回答