为了账号安全,请及时绑定邮箱和手机立即绑定

分别计算 python 数据框中不同列中的值和字符串?

分别计算 python 数据框中不同列中的值和字符串?

FFIVE 2023-10-26 15:37:42
这是我的第一篇文章(我已经在谷歌上搜索了一整天,但找不到任何东西),请温柔一点。所以我正在使用一个包含多个列、一些浮点数、一些布尔值的数据框。    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])}

     )

)


查看完整回答
反对 回复 2023-10-26
?
芜湖不芜

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"]。


查看完整回答
反对 回复 2023-10-26
  • 2 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信