根据Pandas中其他列的值对列值进行计数

时间:2020-07-27 11:27:48

标签: python pandas count pandas-groupby

我正在尝试计算一个学生在python中使用熊猫获得的0和1。例如,我有以下数据框。

+----------------------------------+--------+
|             Students             | Grades |  
+----------------------------------+--------+
| Student1                         |      0 |
| Student1                         |      1 |
| Student1                         |      2 |
| Student2                         |      3 |
| Student2                         |      5 |
| Student2                         |      0 |
| Student3                         |      3 |
| Student3                         |      4 |
| Student3                         |      5 |
+----------------------------------+--------+

正如您所看到的,student1的总成绩为1年级0,而1年级的总成绩为2。Student2仅得到1,而Student3得到0(没有1和0的成绩)。我不知道该怎么做。有人知道要计数的代码吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试创建一个布尔列,检查Grades是否在[0,1]中,然后在Students上分组并求和。

out = (df['Grades'].isin([0,1]).groupby(df['Students']).sum()
                     .astype(int).reset_index(name='Counts'))

   Students  Counts
0  Student1       2
1  Student2       1
2  Student3       0

答案 1 :(得分:0)

您可以尝试:

>>> df.groupby('Students').agg(lambda x:sum(x.lt(2))).Grades.reset_index(name='Count')
   Students  Counts
0  Student1       2
1  Student2       1
2  Student3       0

参考:

  1. df.groupby
  2. series.reset_index
  3. series.lt
  4. df.groupby.agg