按两列分组,并根据两列的条件添加第三列

时间:2020-05-26 19:47:00

标签: python pandas

假设我输入以下内容:

Date        Type      Cond 
01-05-2001  A         NULL
01-05-2001  B         NULL
01-05-2001  C         x     
01-05-2001  A         y   
            .            
            .
            .
01-08-2001  B         NULL
01-08-2001  B         NULL
01-08-2001  C         NULL
01-08-2001  A         NULL

我想要一个看起来像这样的数据框:

Date         Cond      Count
0            TRUE      2
               .
               .
               .
92           FALSE     1

基本上,我想按确切的日期和类型(这里是A)分组,但用一个日期和一个数字和类型(但类型为数量)替换日期。比起Cond我想将条目标记为TRUE 列中至少有一个不为NULL的值。

谢谢!

1 个答案:

答案 0 :(得分:2)

使用factorize枚举日期,eq检查A

(df.Type.eq('A')
   .groupby(df.Date.factorize()[0])
   .value_counts()
   .unstack(fill_value=0).stack()
   .rename_axis(['Date','Cond'])          
   .reset_index(name='Count')
)