为什么`.keys()`为熊猫`DataFrame`返回`Index`?

时间:2019-05-13 22:30:06

标签: python pandas dataframe series

我的最终目标是在取某些组的平均值后,按组标签获得特定的值。为此,我想获取一个列名列表,以便选择具有我感兴趣的组标签的列。但是,生成的DataFrame的行为不符合预期:

import pandas as pd
df = pd.DataFrame({'x': ['a','b','c','a','b','c'], 'y': [1, 2, 3, 4, 5, 6]})
means = df.groupby('x').mean()

type(means)给出pandas.core.frame.DataFrame

means.keys()给出Index(['y'], dtype='object')

但是,keys方法的文档说:

  

获取“信息轴”(有关更多信息,请参见索引)

     

这是Series的索引,DataFrame的列,Panel的major_axis。

mean.keys()的结果似乎与此矛盾,因为meanDataFrame,但它返回的Index就像是Series。这是预期的行为吗?如果确实是一个系列,我可以很容易地查找所需的值,但是在大多数方面它仍然像DataFrame一样。

这是Python 3.7.3上的pandas 0.24.2

1 个答案:

答案 0 :(得分:1)

您的groupby语句的结果确实是一个数据帧。它是一列数据框,但仍然是数据框。

这样,当您使用keys方法时,您应该获得column标签,在这种情况下为'y'

means.keys()
Index(['y'], dtype='object')

每当您在数据框中选择单个列时,pandas都会返回一系列。因此,选择列“ y”并使用键应返回索引。

means['y'].keys()
Index(['a', 'b', 'c'], dtype='object', name='x')

在这种情况下,术语“索引”令人困惑,因为Pandas中的列和行都是索引项。