gpt4 book ai didi

python - 当 pandas DataFrame 有层次索引时选择一个单元格

转载 作者:行者123 更新时间:2023-11-28 18:32:29 26 4
gpt4 key购买 nike

我希望能够做到

dat.loc['label_row1', 'label_row2', 'label_col']

但是,它不起作用,需要

dat.loc['label_row1', 'label_row2'].loc['label_col']

对我来说,这是相当不直观的,因为当没有层次索引时,我可以用

选择一个单元格

dat.loc['label_row', 'label_col']

任何人都可以解释推理或建议一种方法来记住这个怪癖吗?

例子:

import pandas as pd
from pandas_datareader import wb

dat = wb.download(
indicator=['BX.KLT.DINV.WD.GD.ZS'],
country='CN', start=2005, end=2011)
dat.loc["China", "2003"].loc["BX.KLT.DINV.WD.GD.ZS"]

最佳答案

如果您的索引首先排序,您可以选择所有国家和 2009 年:

dat.sort_index().loc[(slice(None), '2009'), :]
BX.KLT.DINV.WD.GD.ZS
country year
China 2009 2.590357

这里是 indexing with hierarchical data 的链接在文档中。

因为您的索引是一个 MultiIndex 是一个元组,所以您的 .loc 索引也需要是一个元组。请注意以下两种方法之间的区别。一个返回系列,另一个返回数据框:

>>> dat.sort_index().loc[('China', '2009'), :]
BX.KLT.DINV.WD.GD.ZS 2.590357
Name: (China, 2009), dtype: float64

>>> dat.sort_index().loc[[('China', '2009')], :]
BX.KLT.DINV.WD.GD.ZS
country year
China 2009 2.590357

关于python - 当 pandas DataFrame 有层次索引时选择一个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35611786/

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