我发现 DataFrame 对象上的 groupby
方法的行为出乎意料。
让我用一个例子来解释一下。
df = pd.DataFrame({'key1': ['a', 'a', 'b', 'b', 'a'],
'key2': ['one', 'two', 'one', 'two', 'one'],
'data1': np.random.randn(5),
'data2': np.random.randn(5)})
data1 = df['data1']
data1
# Out[14]:
# 0 1.989430
# 1 -0.250694
# 2 -0.448550
# 3 0.776318
# 4 -1.843558
# Name: data1, dtype: float64
data1
不再具有 'key1'
列。
因此,如果我应用以下操作,我预计会收到错误:
grouped = data1.groupby(df['key1'])
但我没有,我可以进一步在 grouped
上应用 mean
方法来获得预期的结果。
grouped.mean()
# Out[13]:
# key1
# a -0.034941
# b 0.163884
# Name: data1, dtype: float64
但是,上述操作确实使用 df
的 'key1'
列创建了一个组。
怎么会发生这种事?解释器是否将原始 DataFrame(本例中为 df)的信息与创建的 DataFrame/series(本例中为 data1)一起存储?
谢谢。
最佳答案
这只是语法糖,查看here - 分别按列(系列
)进行选择:
This is mainly syntactic sugar for the alternative and much more verbose
s = df['data1'].groupby(df['key1']).mean()
print (s)
key1
a 0.565292
b 0.106360
Name: data1, dtype: float64
关于python - DataFrame groupby 方法的语义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47363747/