如何分组并计算pandas中组中每列的无缺失值的数量

时间:2017-03-17 08:34:12

标签: python python-3.x pandas dataframe pandasql

我有以下datadrame

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'列。我可以单独为每个列执行此操作,并将它们手动放入数据框中,但我正在寻找一个groupby方法或类似的方法,我可以自动来到一个新的DF而不是在' var'作为索引和两列显示每个组的非缺失值的计数。

喜欢这个

var  qualified_count loyal_count
 1       xx            xx
 2       xx            xx

1 个答案:

答案 0 :(得分:6)

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

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

enter image description here