我的最终目标是在取某些组的平均值后,按组标签获得特定的值。为此,我想获取一个列名列表,以便选择具有我感兴趣的组标签的列。但是,生成的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()
的结果似乎与此矛盾,因为mean
是DataFrame
,但它返回的Index
就像是Series
。这是预期的行为吗?如果确实是一个系列,我可以很容易地查找所需的值,但是在大多数方面它仍然像DataFrame一样。
这是Python 3.7.3上的pandas 0.24.2
答案 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中的列和行都是索引项。