我有一个 panda 数据框 df,我想按变量“house”进行分组,并在其他三个变量中执行特定操作:“var1”、“var2”和“var3”。假设三个变量都是数字,'var1' 的值为 1,2,3。
data = {'house':['A', 'B', 'A', 'A', 'B', 'B', 'B'], 'var1':[3, 0, 1, 3,4,5,3], 'var2':[2, 0, 5, 1,4,1,3],'var3':[4, 2, 3, 3,0,5,1]}
df = pd.DataFrame(data)
df
现在,我想创建 3 个新变量
- new_var1 = 计算 var3 取值 == 3 的次数
- new_var2 = sum var2(简单聚合)
- new_var3 = sum var3(简单聚合)
如果我使用 R 编程语言,我会立即完成
require(dplyr)
data = data.frame('house'=c('A', 'B', 'A', 'A', 'B', 'B', 'B'),
'var1'=c(3, 0, 1, 3,4,5,3),
'var2'=c(2, 0, 5, 1,4,1,3),
'var3'=c(4, 2, 3, 3,0,5,1))
df= data %>% group_by(house) %>% summarise(new_var1 = sum(var1 == 3),
new_var2 = sum(var2),
new_var2 = sum(var2))
df
在Python中,首先,我按分组
df.groupby(['house'])['var1','var2', 'var3']
但我想继续执行同一行代码,但我不知道该怎么做。 python中有一些类似的“总结”函数吗?
最佳答案
您可以使用agg
方法来做到这一点
(df.groupby(['house']).agg({'var1': lambda x: (x==3).sum(),
'var2': 'sum',
'var3': 'sum'})
.rename(columns={"var1": "new_var1",
"var2": "new_var2",
"var3":"new_var3"})
)
关于python - 在 python 中,summary (dplyr) 函数类似,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58177656/