[英]Slicing across a timeseries range in a multiindex DataFrame
我有一个 DataFrame 跟踪几个全球市场的“调整收盘价”,导致日期重复。 为了清理它,我使用.set_index(['Index Ticker', 'Date'])
。
我的问题是收盘价可以追溯到 1997-07-02,但我只需要 2020-01-01 及以后。 我尝试使用idx = pd.IndexSlice
后跟df.loc[idx[ :, '2020-01-01':], :]
以及df.loc[(slice(None), '2020-01-01':), :]
,但是这两种方法都会在:
上返回一个语法错误,我用它来对一系列日期进行切片。 关于在特定日期后获取我需要的数据的任何提示? 先感谢您!
尝试:
# create dataframe to approximate your data
df = pd.DataFrame({'ticker' : ['A']*5 + ['M']*5,
'Date' : pd.date_range(start='2021-01-01', periods=5).tolist() + pd.date_range(start='2021-01-01', periods=5).tolist(),
'high' : range(10)}
).groupby(['ticker', 'Date']).sum()
high
ticker Date
A 2021-01-01 0
2021-01-02 1
2021-01-03 2
2021-01-04 3
2021-01-05 4
M 2021-01-01 5
2021-01-02 6
2021-01-03 7
2021-01-04 8
2021-01-05 9
# evaluate conditions against level 1 (Date) of your multiIndex; level 0 is ticker
df[df.index.get_level_values(1) > '2021-01-03']
high
ticker Date
A 2021-01-04 3
2021-01-05 4
M 2021-01-04 8
2021-01-05 9
或者,如果可能,在设置 multiIndex 之前删除不需要的日期。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.