我有以下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
答案 0 :(得分:6)
您可以在计算时使用仅包含非NaN
条目的DF.GroupBy.count
。因此,您可以让var
成为分组键,然后分别聚合DF
的两个选定列的计数,如下所示:
cols = ['qualified_date', 'loyal_date']
df.groupby('var')[cols].agg('count').add_suffix("_count").reset_index()