繁体   English   中英

根据 Pandas 中其他列中的值计算列值

[英]Counting column values based on values in other columns in Pandas

我试图计算一个学生在 python 中使用 pandas 得到了多少个 0 和 1。 例如,我有以下数据框。

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

如您所见,学生 1 得了一个 0 级和一个 1 级,他总共得了 2。学生 2 只得了 1,学生 3 得了 0(没有 1 级和 0 级)。 我不知道该怎么做。 有人知道要计数的代码吗?

您可以尝试创建一个 boolean 列检查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

你可以试试:

>>> 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM