切片秒级 datetime multindex 数据帧

slice second level datetime multindex dataframe

提问人:Nicolas Rey 提问时间:5/3/2023 更新时间:5/3/2023 访问量:32

问:

我有一个数据帧,看起来像这样:enter image description here

我正在尝试从日期开始切片特定符号和作为。 行为

df.loc[symbol]

我得到那个数据帧:

enter image description here

所以它从 2021-3-1 到 2023-1-31。 我有一个变量 “date” = Timestamp('2021-03-01 00:00:00'),所以是第一个日期。

当我尝试像这样切片时:

df.loc[pd.IndexSlice[symbol, date:]]

我收到错误:

KeyError:时间戳('2021-03-01 00:00:00')

同样:

df.loc[pd.IndexSlice[symbol, :date]]

打印时

df.index[0]

('BOTTO/WETH', 时间戳('2023-01-31 00:00:00'))

以证明第二层确实是时间戳。

知道我该怎么做吗?

Pandas Slice 多索引

评论


答:

1赞 jezrael 5/3/2023 #1

对我来说,如果添加在最后之前选择所有列,效果很好::]

df = pd.DataFrame(

    np.random.randn(20, 1),

    columns=["A"],

    index=pd.MultiIndex.from_product(

        [["a", "b"], pd.date_range("20210228", periods=10, freq="D")]

    ),

)

symbol = 'a'
date = pd.Timestamp('2021-03-01 00:00:00')

df = df.loc[pd.IndexSlice[symbol, date:], :]
print (df)
                     A
a 2021-03-01  0.228366
  2021-03-02 -1.092949
  2021-03-03 -1.086836
  2021-03-04 -1.155692
  2021-03-05  0.382733
  2021-03-06 -1.653822
  2021-03-07  0.978806
  2021-03-08 -1.537005
  2021-03-09 -0.200136

评论

0赞 Nicolas Rey 5/3/2023
事实上,问题是需要先对索引进行排序,而我则按时间戳和其他东西进行排序