在熊猫中切片MultiIndexed DataFrame

迪马·西杜科夫(Dima Sidukov):

我有以下DataFrame命名的pop:

California  2000    33871648
            2010    37253956
New York    2000    18976457
            2010    19378102
Texas       2000    20851820
            2010    25145561

我想打印出加利福尼亚和德克萨斯州的2010年值。每当我尝试pop[['California','Texas'], 2010]遇到错误时,该'(['California', 'Texas'], 2010)' is an invalid key如何打印信息?

僵尸

TLDR

df.loc[(level_1_indices_list, level_2_indices_list), :]

在这种情况下:

df.loc[(['California','Texas'], ['2010']), :]

下面是一个更详细的版本。


# import packages & set seed
import numpy as np
import pandas as pd
np.random.seed(42)

创建示例数据框

使用熊猫文档

arrays = [np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux']),
          np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'])]

s = pd.Series(np.random.randn(8), index=arrays)

df = pd.DataFrame(np.random.randn(8, 4), index=arrays)

看起来像:

在此处输入图片说明


使用多索引切片

有了df您就可以做到:

df.loc[(['qux','foo'], 'one'), :]

为了保持符号一致性,您可以[]在切片的第二个元素上使用:

df.loc[(['qux','foo'], ['one']), :]

这将产生相同的结果。

这是:

在此处输入图片说明

(选择'one'等效于2010在中进行选择df['qux','foo']应该等效于选择['California','Texas']。基于此,我认为您可以将此处的步骤应用于您的数据。)


也可能会有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章