这是我的第一篇文章(我已经在谷歌上搜索了一整天,但找不到任何东西),请温柔一点。所以我正在使用一个包含多个列、一些浮点数、一些布尔值的数据框。 col_1 col_2 col_3 col_4 col_5 col_60 38.109375 37.515625 True False (64, 69) F1 27.265625 28.484375 True False (74, 79) M2 26.843750 27.015625 False True (64, 69) F我想重新订购/制作一个新的 df 其中:是 groupby col_6 AND col_5 (检查)具有 col_1 和 col_2 的平均值(检查)在 col_3 和 col_4 中计算“True”(不起作用)到目前为止我的方法:new_df = df.groupby(['col_6', 'col_5']).agg({'col_5' : ['count'], 'col_1' : ['mean'], 'col_2' : ['mean']})表的图像。但我不知道如何计算也与 col_5 和 col_6 相关的“trues”?希望这是有道理的,有人可以提供帮助。
2 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
您可以在 agg 函数中使用 lambda 计算 True 项目
new_df = (
df
.assign(
col_3 = lambda x: x['col_3'].astype(int),
col_4 = lambda x: x['col_4'].astype(int)
)
.groupby(['col_6', 'col_5'])
.agg({'col_5' : ['count'],
'col_1' : ['mean'],
'col_2' : ['mean'],
'col_3' : lambda x: len([1 for item in x if item ==True]),
'col_4' : lambda x: len([1 for item in x if item ==True])}
)
)
芜湖不芜
TA贡献1796条经验 获得超7个赞
您可以像对整数求和一样对布尔值求和:
[ins] In [15]: df["y"]
Out[15]:
0 True
1 True
2 False
Name: y, dtype: bool
[ins] In [16]: df["y"].sum()
Out[16]: 2
所以你可以在你的字典中使用例如"col_3": ["sum"]。
添加回答
举报
0/150
提交
取消