首页 > 解决方案 > Pandas:计算具有 NaN 值的四列的唯一组合

问题描述

我一直在为此挠头。我有一个包含四列的数据框

   a   b    c    d

0  1   1   Nan  NaN
1  2   1    1   NaN
2  1   1   Nan  NaN
3  3   2    1    3

我想要从列到新列的唯一组合的计数

   a   b    c    d    count

0  1   1   Nan  NaN     2
1  2   1    1   NaN     1
3  3   2    1    3      1

我一直在使用:

df.groupby(['a', 'b', 'c', 'd']).size().reset_index().rename(columns={0:'count'})

但这只会给我每列的值不是 Nan 的行:

   a   b    c    d    count

0  3   2    1    3      1

如何获得所有组合?

标签: pandas

解决方案


一种解决方法是NaN用字符串替换值'NaN'

(df.fillna('NaN')
   .groupby(list(df.columns))['a'].size()
   .reset_index(name='count')
)

输出:

   a  b    c    d  count
0  1  1  NaN  NaN      2
1  2  1    1  NaN      1
2  3  2    1    3      1

推荐阅读