1

我有基本的财务 OHLCV 数据。

                      Datetime        Open    Volume        date
0    2021-08-25 09:30:00-04:00  149.699997   3524920  2021-08-25
1    2021-08-25 09:35:00-04:00  149.699997   1424746  2021-08-25
2    2021-08-25 09:40:00-04:00  149.785004   1248013  2021-08-25
3    2021-08-25 09:45:00-04:00  149.649994   1208242  2021-08-25
4    2021-08-25 09:50:00-04:00  149.486603   1345607  2021-08-25

假设我想选择某一天的所有示例。

df["Datetime"].eq("2021-08-25")

即使在使用 lt 或 gt 时可以与字符串日期进行比较,这也不起作用。

所以我创建了日期列

df["date"] = df["Datetime"].dt.date

这个新列还不是对象 dtype:

df_n["date"].eq("2021-08-25")

还是不行。

4

2 回答 2

2

一种解决方案是'remove'时间,这意味着将它们设置为00:00:00by Series.str.normalize,因为显然 pandas 将字符串日期时间与时间戳进行比较:

df["Datetime"].dt.normalize().eq("2021-08-25")
df["Datetime"].dt.floor('d').eq("2021-08-25")

如果需要比较日期,也需要另一边的日期:

from datetime import date

df["Datetime"].dt.date.eq(date(2021,8,25))
于 2021-11-18T11:16:44.827 回答
2

使用 strftime 也可以

df1['Datetime']= pd.to_datetime(df1['Datetime'] )
df1[df1['Datetime'].dt.strftime('%Y-%m-%d')=='2021-08-25']
于 2021-11-18T11:21:53.130 回答