首页 > 解决方案 > 如何根据另一列的条件对每一列求和而不迭代熊猫数据框中的列

问题描述

我有一个数据框如下:

    Preg  Glucose  BloodPressure  SkinThickness  Insulin  Outcome  
0    1.0     85.0           66.0           29.0      0.0    0.0   
1    8.0    183.0           64.0            0.0      0.0    0.0   
2    1.0     89.0           66.0           23.0     94.0    1.0   
3    0.0    137.0           40.0           35.0    168.0    1.0   
4    5.0    116.0           74.0            0.0      0.0    1.0

我想要一种 pythonic 的方式来根据其中一列的条件分别对每一列求和。我可以通过遍历 df 列来做到这一点,但我确信有一种我不熟悉的更好的方法。

具体到我拥有的数据,如果最后一列“结果”等于1,我想对每一列的值求和。最后,我应该得到如下:

    Preg   Glucose BloodPressure  SkinThickness  Insulin  Outcome  
0    6.0     342.0         180.0           58.0    262.0    0.0   

有任何想法吗?

标签: pandasdataframesum

解决方案


这是获得预期输出的解决方案:

sum_df = df.loc[df.Outcome == 1.0].sum().to_frame().T
sum_df.Outcome = 0.0

输出:

   Preg  Glucose  BloodPressure  SkinThickness  Insulin  Outcome
0   6.0    342.0          180.0           58.0    262.0      0.0

文档:

  • loc:通过标签或布尔数组访问一组行/列
  • sum:默认情况下对所有列求和,并返回由列索引的 Series。
  • to_frame:将 Series 转换为 DataFrame。
  • .T:访问转置函数,转置DataFrame。

推荐阅读