Query in Multiindex for datetime



我有这个数据框架(这里相关的是Multiindex):

VAL  
FINT                ID                                     
2021-07-01 00:00:00 C7    32.0
C6    38.0
C5    94.0
2021-07-01 12:00:00 C7    28.0
C6    34.0
C5    95.0
2021-07-02 00:00:00 C7    29.0 
C6    33.0
C5    22.1
2021-07-02 12:00:00 C7    29.0 
C6    33.0
C5    62.2 
...

我想创建一个新的数据框架,选择数据小时12。我想用query,但我不知道如何选择小时内查询选择。我的意思是,我在搜索像

这样的东西
df.query('FINT.hour == 12')

,它不工作(而像df.query('ID=="C7"')工作得很好)。我用的是熊猫1.2.4。Thx .

对于我的工作选择水平在MultiIndex像Series.dt:

df = df.query('FINT.dt.hour == 12')
print (df)
VAL
FINT                ID      
2021-07-01 12:00:00 C7  28.0
C6  34.0
C5  95.0
2021-07-02 12:00:00 C7  29.0
C6  33.0
C5  62.2

使用布尔索引的解决方案是:

df[df.index.get_level_values('FINT').hour == 12]

您也可以尝试从第一层获取datetime值,并使用DatetimeIndex.indexer_at_time来获取一天中特定时间值的索引位置。

out = df.iloc[df.index.get_level_values(0).indexer_at_time('12:00')]
print(out)
VAL
FINT                ID
2021-07-01 12:00:00 C7  28.0
C6  34.0
C5  95.0
2021-07-02 12:00:00 C7  29.0
C6  33.0
C5  62.2

最新更新