我正在尝试对多个列进行groupby聚合值。我来自于R/dplyr的世界,使用group_by/summarize通常可以在一行代码中实现我想要的内容。我正在尝试寻找使用pandas实现同样优雅的方式。
考虑下面的输入数据集。我想按州( state )聚合并计算列v1, 其中 v1 = sum(n1)/sum(d1) by state。
使用dplyr的r-code如下:
input %>% group_by(state) %>%
summarise(v1=sum(n1)/sum(d1),
v2=sum(n2)/sum(d2))
有没有一种优雅的方法在Python中实现这个功能?我在stackoverflow网站上找到了一个略显冗长的方法来获取我想要的结果,链接地址为这里。 需要将修改后的Python代码从链接复制过来。
In [14]: s = mn.groupby('state', as_index=False).sum()
In [15]: s['v1'] = s['n1'] / s['d1']
In [16]: s['v2'] = s['n2'] / s['d2']
In [17]: s[['state', 'v1', 'v2']]
输入数据集
state n1 n2 d1 d2
CA 100 1000 1 2
FL 200 2000 2 4
CA 300 3000 3 6
AL 400 4000 4 8
FL 500 5000 5 2
NY 600 6000 6 4
CA 700 7000 7 6
输出
state v1 v2
AL 100 500.000000
CA 100 500.000000
NY 100 1500.000000
CA 100 1166.666667
FL 100 1166.666667