python - 在 python 中,summary (dplyr) 函数类似

标签 python r pandas

我有一个 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 个新变量

  1. new_var1 = 计算 var3 取值 == 3 的次数
  2. new_var2 = sum var2(简单聚合)
  3. 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/

相关文章:

python - 尝试使用OpenCV显示图像时发生错误(-215)size.width> 0 && size.height> 0

r - Logistic 回归的预测和置信区间

python - 高效查询pandas数据集

pandas - 使用 MultiIndex 从 Pandas 面板中选择数据

python - Pandas 中列名的异常排序

python - 哪一个是子类 ChildWidget (PySide) 的父类?

python - 在 Django : How do I auto-fill a ManyToMany-Field on save(), 中,当从 django-admin 调用时?

python - 线性分离高斯滤波器并使用 Numpy 进行计算

r - 当列在 NA 结束时插入 NA 值

r - 编译 pdf 输出时knitr -pandoc-citeproc 错误