python中的summary(dplyr)函数
我有一个panda数据帧df,我希望通过变量“house”进行分组,并在其他三个变量中执行特定操作:“var1”、“var2”和“var3”。Suposse这三个变量是数值型的,“var1”取值为1,2,3python中的summary(dplyr)函数,python,r,pandas,Python,R,Pandas,我有一个panda数据帧df,我希望通过变量“house”进行分组,并在其他三个变量中执行特定操作:“var1”、“var2”和“var3”。Suposse这三个变量是数值型的,“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.DataF
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个新变量
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中有一些类似的“summary”函数?您可以使用
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
中的R
移植数据包(dplyr
,tidyr
,tibble
,等等):
如果您熟悉R中的这些软件包,并希望在python中应用它,那么这里就是为您准备的:
从数据导入f
从datar.all导入*
数据=TIBLE(
房屋=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=数据>>分组依据(f.house)>>总结(新变量1=总和(f.var1==3),
new_var2=总和(f.var2),
新变量3=总和(f.var3))
打印(df)
输出:
house new_var1 new_var2 new_var3
0 A 2 8 10
1 B 1 8 8
回答得好,希望你不介意我重新格式化了一点。另外,使用
'sum'
和x。sum()
可能比sum
快。这很有趣。如果我去掉括号,我会得到一个错误。为什么变量的顺序不是new_var1、new_var2和new_var3?对不起,现在我意识到了括号错误。忽略注释。需要括号,因为代码位于多行中。虽然我可以很好地看到变量的顺序,但是变量的顺序问题仍然是相关的。