繁体   English   中英

在多索引数据帧中跨时间序列范围切片

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM