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

这是我的第一篇文章(我已经在谷歌上搜索了一整天,但找不到任何东西),请温柔一点。


所以我正在使用一个包含多个列、一些浮点数、一些布尔值的数据框。


    col_1       col_2       col_3      col_4       col_5      col_6

0   38.109375   37.515625   True       False       (64, 69)   F

1   27.265625   28.484375   True       False       (74, 79)   M

2   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”?希望这是有道理的,有人可以提供帮助。


FFIVE
浏览 139回答 2
2回答

呼唤远方

您可以在 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])}     ))

芜湖不芜

您可以像对整数求和一样对布尔值求和:[ins] In [15]: df["y"]Out[15]: 0     True1     True2    FalseName: y, dtype: bool[ins] In [16]: df["y"].sum()Out[16]: 2所以你可以在你的字典中使用例如"col_3": ["sum"]。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python