[英]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 级别,例如带有
.dt
的Series
:
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.