gpt4 book ai didi

python pandas multiIndex Dataframe,如何根据iloc选择一级

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:40 25 4
gpt4 key购买 nike

df = pd.DataFrame(np.random.rand(100, 2),
columns=pd.Index(['A', 'B'], name='bar'),
index=pd.date_range('20160101',
periods=100, freq='D', name='foo'))

corr = df.rolling(12).corr()

在旧版本中,这会返回一个面板,因此现有代码使用

corr[0,:,:]

返回第一个日期的 corr 矩阵。

但是,在新版本中,corr 是一个 multiIndex DataFrame,上面的代码失败了。如何以最少的更改实现相同的输出?

corr.iloc[0] # only returns first row
corr.iloc[0,:,:] # error

编辑:

所需的输出是获得与下面相同的返回,但不是使用 .loc 和值,而是使用类似 .iloc[11] 的东西(即相关性date中第12个值对应的矩阵)

corr.loc['2016-01-12']

bar A B
foo bar
2016-01-12 A 1.000000 -0.115059
B -0.115059 1.000000

最佳答案

@MaxU 提到的问题是 .iloc 不是“MultiIndex-aware”——参见 here进行讨论。

针对您的案例的替代解决方案:

dates = corr.index.get_level_values(0).drop_duplicates()
corr.loc[dates[12]] # correl. matrix for 12th date (0-indexed)

保留为 DataFrame:

corr.loc[[dates[12]]]

关于python pandas multiIndex Dataframe,如何根据iloc选择一级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47859723/

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