简体   繁体   English

在多索引中查询日期时间

[英]Query in Multiindex for datetime

I have this dataframe (relevant here is the Multiindex):我有这个 dataframe (这里相关的是多索引):

 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...

I want to create a new dataframe selecting data for hour at 12. I wanted to use query for this, but I don't know how to select the hour inside the query selection.我想创建一个新的 dataframe 选择 12 小时的数据。我想为此使用query ,但我不知道如何在查询选择中使用 select 小时。 I mean, I am searching something like我的意思是,我正在寻找类似的东西

df.query('FINT.hour == 12')

which it doesn't work (while something like df.query('ID=="C7"') works well).它不起作用(而像df.query('ID=="C7"')这样的东西效果很好)。 I am using pandas 1.2.4.我正在使用 pandas 1.2.4。 Thx.谢谢。

For me working select level in MultiIndex like Series with .dt :对我来说,在 MultiIndex 中工作 select 级别,例如带有.dtSeries

 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

With boolean indexing solution is:用 boolean 分度解决方案是:

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

You can also try getting datetime values from first level and use DatetimeIndex.indexer_at_time to get index locations of values at particular time of day.您还可以尝试从第一级获取日期时间值,并使用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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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