gpt4 book ai didi

python - pandas:groupby 对象是否存储索引?

转载 作者:太空宇宙 更新时间:2023-11-03 11:37:28 27 4
gpt4 key购买 nike

据我了解,groupby 需要计算分组变量的索引。但是,我不完全确定它是否存储在 groupby 对象中。

我的代码看起来像

df.groupby(["col1","col2"]).agg( something )
( ... some code ... )
df.groupby(["col1","col2"]).agg( something else )

我是否正确理解以下内容可以避免索引被构建两次?

my_group = groupby(["col1","col2"])
my_group.agg( something )
( ... some code ... )
my_group.agg( something else )

这对我来说很重要,因为我写的东西必须两次传递组,如果没有存储索引,我可能必须实现我自己的 groupby

最佳答案

是的,groupby 计算用于计算聚合的索引,如果我们可以将其存储在 groupby 对象中,它会再次存储正在构建的索引

df3 = pd.DataFrame({"A": ["foo", "foo", "foo", "foo", "foo",
"bar", "bar", "bar", "bar"],
"B": ["one", "one", "one", "two", "two",
"one", "one", "two", "two"],
"C": ["small", "large", "large", "small",
"small", "large", "small", "small",
"large"],
"D": [1, 2, 2, 3, 3, 4, 5, 6, 7],
"E": [2, 4, 5, 5, 6, 6, 8, 9, 9]})
df4 = df3.sort_values(['A','B'])
res1 = df3.groupby(['A', 'B'])['D'].mean()
res2 = df4.groupby(['A', 'B'])['D'].median()

print res1.index
MultiIndex(levels=[[u'bar', u'foo'], [u'one', u'two']],
labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
names=[u'A', u'B'])

print res2.index
MultiIndex(levels=[[u'bar', u'foo'], [u'one', u'two']],
labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
names=[u'A', u'B'])

你绝对可以做到

my_group = df3.groupby(['A', 'B']) 
print type(my_group)
pandas.core.groupby.groupby.DataFrameGroupBy

然后可以对创建的同一个 groupby 对象执行不同的聚合,确保它不会再次计算索引。

如果有帮助请告诉我

关于python - pandas:groupby 对象是否存储索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56306278/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com