独特的dropna似乎不起作用

时间:2018-08-09 22:03:55

标签: python pandas nan

我正试图根据充当标志的另一列来获得id的唯一计数。

但是,当使用下面的代码时:

df['id_flag_0']=np.where(df['flag']==0,df['id'],np.nan)
df['id_flag_1']=np.where(df['flag']==1,df['id'],np.nan)

grp=df.groupby(other_columns+'flag')
result=grp['id','id_flag_0','id_flag_1'].nunique(dropna=True)


grp2=df.groupby(other_columns)
result2=grp2['id','id_flag_0','id_flag_1'].nunique(dropna=True)

结果给出:

flag | id | id_flag_0 | id_flag_1
0    | 12 |     12    |     1
1    | 10 |      1    |     10

哪个表示正在计算NaN

Result2给出:

| id | id_flag_0 | id_flag_1
| 15 |     13    |     11

还表明正在计算NaN

我实际需要的结果是:

 | id | id_flag_0 | id_flag_1
 | 15 |     12    |     10

我应该传递np.nan以外的其他内容吗?

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

我刚刚意识到自己搞砸了。

我还有一个groupby和sum()将nan转换为0