【问题标题】:How to group by and count number of none missing values for each column in group in pandas如何分组并计算熊猫组中每一列的无缺失值的数量
【发布时间】:2017-08-08 17:23:35
【问题描述】:

我有以下数据帧

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,这正是我正在寻找的,有什么方法可以将它旋转并有,'var 1','var 2'作为列名,'qualified_date_count'和'loyal_date_count'作为索引?我们可以编辑代码还是我需要问一个新问题?
    • 只需删除.reset_index() 部分并转置DF。您必须处理列名的其他格式。
    猜你喜欢
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    相关资源
    最近更新 更多