pandas 将 Dataframe 的datetime64[ns]索引转换为可比较的datetime dtype

svmlkihl  于 2022-11-27  发布在  其他
关注(0)|答案(2)|浏览(225)

尝试为我的 Dataframe 创建掩码,但无法将上限/下限日期时间与 Dataframe 的索引进行比较,因为它是datetime 64 [ns]。我已经看到解决方案是通过pd.Timestamp进行转换-但我仍然收到值错误。
此外,我还尝试转换索引,并抛出错误:“无法将输入...序列...转换为时间戳”
输入:

x = yf.Ticker('^GSPC').history(period='max',interval='1d').loc[:,['Open']]
stdate = pd.Timestamp(2015,12,31)
edate = dt.datetime.today()

y = x.index > stdate

实际输出:

*"Invalid comparison between dtype=datetime64[ns, TIMEZONE] and Timestamp"*

预期输出:

[FALSE, FALSE, FALSE, TRUE, TRUE... TRUE]
k7fdbhmy

k7fdbhmy1#

Datetime64索引可以通过.date细化到仅包含日期

df.index.date >= date or df.index.datetime >= datetime

会起作用

8ulbf1ek

8ulbf1ek2#

使用数字.日期时间64
注意:似乎无法在时间感知日期时间之间进行比较,请使用tz_localize删除其时区
也可以只将日期时间转换为时间戳(int)

import numpy as np
import pandas as pd

s = pd.Series([0, 1669345200 * 10**9], dtype="datetime64[ns]").dt.tz_localize("UTC")
print(s.info())

stdate = np.datetime64("2015-12-31T00:00:00")
edate = np.datetime64("now")
print(stdate)
print(edate)
print(s.dt.tz_localize(None) > stdate)

相关问题