gpt4 book ai didi

pandas - 如何查询嵌套级别的MultiIndex?

转载 作者:行者123 更新时间:2023-12-02 00:55:06 27 4
gpt4 key购买 nike

我正在尝试将 query 与具有多级列的 MultiIndex 一起使用。

!pip install pandas-datareader --quiet

下一步...

from pandas_datareader import DataReader

df = DataReader(["SPY", "XOM"], "yahoo", datetime(2012,7,1), datetime(2018,7,21))
df.keys()

返回...

MultiIndex(levels=[['High', 'Low', 'Open', 'Close', 'Volume', 'Adj Close'], ['SPY', 'XOM']],
labels=[[0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5], [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1]],
names=['Attributes', 'Symbols'])

df['High']['SPY'].head()

返回...

Date
2012-07-02 136.649994
2012-07-03 137.509995
2012-07-05 137.800003
2012-07-06 135.770004
2012-07-09 135.570007
Name: SPY, dtype: float64

我想知道如何在多个级别上使用query?我在想这样的事情?

df.query('High.SPY > 137')

最佳答案

AFAIU 这仅得到部分支持 - 请参阅 this issue在 GH 上。

该帖子建议使用这种语法:

df.query('@df.High.SPY > 137')

如果您没有特定需要使用query,可以使用loc:

df.loc[:, ('High', 'SPY')][df.loc[:, ('High', 'SPY')] > 137]

或者:

df[df.loc[:, ('High', 'SPY')] > 137].loc[:,('High', 'SPY')]


Date
2012-07-03 137.509995
2012-07-05 137.800003
2012-07-18 137.639999
2012-07-19 138.179993
2012-07-20 137.160004
2012-07-27 139.070007
2012-07-30 139.339996
2012-07-31 138.869995
...

关于pandas - 如何查询嵌套级别的MultiIndex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54901183/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com