我有以下数据帧

user_id  var  qualified_date    loyal_date
  1       1      2017-01-17     2017-02-03
  2       1      2017-01-03     2017-01-13
  3       1      2017-01-11      NaT
  4       1       NaT            NaT
  5       1       NaT            NaT
  6       2      2017-01-15      2017-02-14
  7       2      2017-01-07      NaT
  8       2      2017-01-23      2017-02-18
  9       2      2017-01-25      NaT
  10      2      2017-01-11      2017-03-01

我需要按“Var”中的值对这个数据框进行分组,然后计算每个“qualified_date”和“engaged_date”列的非缺失值的数量。我可以分别为每一列做这件事,并手动将它们放在数据框中,但我正在寻找一种 gr​​oupby 方法或类似的方法,我可以自动来到一个新的 DF,而不是将“var”中的值作为索引并用于两列显示每个组的非缺失值计数。

像这样
var  qualified_count loyal_count
 1       xx            xx
 2       xx            xx

最佳答案

您可以使用 DF.GroupBy.count ,它在计数时仅包含非 NaN 条目。因此,您可以让 var 成为分组键,然后分别聚合 DF 的两个选定列的计数,如下所示:

cols = ['qualified_date', 'loyal_date']
df.groupby('var')[cols].agg('count').add_suffix("_count").reset_index()

python - 如何分组并计算pandas中组中每列的非缺失值数-LMLPHP

关于python - 如何分组并计算pandas中组中每列的非缺失值数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42852668/

10-12 17:54