gpt4 book ai didi

python - 将操作应用于结果中具有多列的多列

转载 作者:太空宇宙 更新时间:2023-11-03 15:01:22 26 4
gpt4 key购买 nike

在 sql 中,查询看起来像 按 id 从表组中选择 id、avg(x)、avg(y)、max(x)、max(y)它可以转化为对 Pandas 数据框的单一操作吗?我可以获得每个函数的结果,例如

mydf['center_x'] =  mydf.groupby('id')['x'].mean()
mydf['center_y'] = mydf.groupby('id')['y'].mean()

等等

但它是同一操作的过多调用,加上过多的存储需求(mydf 巨大)。况且最后拿到唯一套有点麻烦。

有什么想法吗?

最佳答案

是的,这是受支持的,请参阅文档 here .

从那里引用:

In [56]: grouped = df.groupby('A')

In [57]: grouped['C'].agg([np.sum, np.mean, np.std])
Out[57]:
sum mean std
A
bar 0.443469 0.147823 0.301765
foo 2.529056 0.505811 0.966450

也许更切合你的问题,你也可以像这样对不同的列做不同的功能:

In [60]: grouped.agg({'C' : np.sum,
....: 'D' : lambda x: np.std(x, ddof=1)})
....:
Out[60]:
C D
A
bar 0.443469 1.490982
foo 2.529056 0.645875

或者,一个更接近您原始问题的实际示例:

df = pd.DataFrame({"group":list("aaaaabbbbb"), "A":np.random.rand(10), "B":np.random.rand(10)})
df.groupby("group").agg({"A":[np.sum, np.mean], "B":[np.sum, np.mean]})


A B
sum mean sum mean
group
a 1.450488 0.290098 3.526962 0.705392
b 1.570386 0.314077 2.734465 0.546893

关于python - 将操作应用于结果中具有多列的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37666431/

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