首页 > 解决方案 > 如何按特定列分组,然后计算不是 NA 的多个列的数量并将它们添加到 Pandas Python 中?

问题描述

我想按 ID 进行分组,然后将 A 和 B 中的值的计数相加,其中不是 NA,然后将 A 和 B 的计数加在一起。除此之外,如果我只想计算 A 中的 y 值怎么办?

+----+---+---+
| ID | A | B |
+----+---+---+
|  1 | x | x |
|  1 | x | x |
|  1 | y |   |
|  2 | y | x |
|  2 | y |   |
|  2 | y | x |
|  2 | x | x |
|  3 | x | x |
|  3 |   | x |
|  3 | y | x |
+----+---+---+

+----+--------+
| ID | Output |
+----+--------+
|  1 |      3 |
|  2 |      6 |
|  3 |      4 |
+----+--------+

标签: pythonpandas

解决方案


这是一种方法:

df = df.groupby('ID').agg(lambda x: sum(pd.notna(x))).sum(1).reset_index(name='Output')

print(df)

   ID  Output
0   1     5.0
1   2     7.0
2   3     5.0

推荐阅读