提问人:Nicolas Rey 提问时间:5/3/2023 更新时间:5/3/2023 访问量:32
切片秒级 datetime multindex 数据帧
slice second level datetime multindex dataframe
问:
我正在尝试从日期开始切片特定符号和作为。 行为
df.loc[symbol]
我得到那个数据帧:
所以它从 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'))
以证明第二层确实是时间戳。
知道我该怎么做吗?
答:
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
事实上,问题是需要先对索引进行排序,而我则按时间戳和其他东西进行排序
评论