【问题标题】:Counting column values based on values in other columns in Pandas根据 Pandas 中其他列中的值计算列值
【发布时间】:2020-11-16 17:26:07
【问题描述】:

我正在尝试计算一个学生在 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 级)。我不知道该怎么做。有谁知道要数的代码吗?

【问题讨论】:

标签: python pandas count pandas-groupby


【解决方案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

【讨论】:

  • 非常感谢,这将解决我的问题。如您在示例中所示,您知道如何将学生合并到单个条目中并在数据框中添加计数列吗?
【解决方案2】:

你可以试试:

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

【讨论】:

  • 非常感谢,这将解决我的问题。如您在示例中所示,您知道如何将学生合并到单个条目中并在数据框中添加计数列吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 2019-03-09
  • 2019-04-17
  • 1970-01-01
  • 2014-11-04
  • 2022-07-08
相关资源
最近更新 更多