python - DataFrame groupby 方法的语义

标签 python semantics pandas-groupby

我发现 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/

相关文章:

python - 是否可以在不折叠 Pandas DataFrame 的情况下获得 groupby 样式计数?

python - 返回用 dict 构造的散列而不是仅使用花括号语法有什么好处吗?

python - 如何使用beeve(Python BDD框架)设置环境变量?

java - 从 Java 运行 .py 文件

用于 Accordion 的 HTML5 详细信息元素

f# - F# 中 `let f = fun a -> a-1` 和 `let f a = a-1` 之间的区别

scala - 方法在语义上等同于 Scala 3 中的函数吗?

python - 在 Pandas 中使用 iloc 的正确方法

pandas - 根据 pandas 的所有列值创建重复标志

python - Pandas 分组并查找公共(public)字符串的数量