我正在尝试agg()
一个df,同时从其中一列创建一个子集:
indi = pd.DataFrame({"PONDERA":[1,2,3,4], "ESTADO": [1,1,2,2]})
empleo = indi.agg(ocupados = (indi.PONDERA[indi["ESTADO"]==1], sum) )
但是我得到了'Series' objects are mutable, thus they cannot be hashed
我只想在“ESTADO”==1时对“Poundera”的值求和
预期产出:
ocupados
0 3
我试图模仿R函数summarise()
,所以我想在一个步骤中和agg其他一些列中完成它
在R中类似于:
empleo <- indi %>%
summarise(poblacion = sum(PONDERA),
ocupados = sum(PONDERA[ESTADO == 1]))
这是正确的方法吗
提前谢谢大家
通常
agg
作为参数函数,而不是级数本身。但在您的情况下,分离过滤和求和更为有利其中一个选择是:
(使用单方括号输出单个数字,而不是
pd.Series
)有点奇怪,但输出的格式正是您想要的格式,语法与您尝试的类似:
使用^{} 代替^{} :
结果:
print(empleo)
给出了:另一个选项是使用
loc
并在estado=1时过滤数据帧,以及sum
列a的值:感谢@Henry的投入
相关问题 更多 >
编程相关推荐