创建一个描述其他列中缺失值的列

时间:2020-02-04 17:31:58

标签: python pandas

我有一个数据帧,如下所示:

A,B,C,D
Nan,NaN,NaN,NaN
Nan,b,c,NaN
Nan,2,Nan,d
a,e,NaN,f
i,j,1,NaN

我想创建一个E列来描述其他列中缺少的模式,例如: E列将包含

A,B,C,D,E
Nan,NaN,NaN,NaN,ABCD
Nan,1,2,NaN,AD
Nan,3,Nan,d,AC
a,e,NaN,6,C
i,j,4,5,

我尝试了df.isnull().sum(axis=1) 但这不考虑例如第4行和第5行中的顺序,它返回相同的值1。 如上所述,如何创建想要的列?

2 个答案:

答案 0 :(得分:4)

这是唱歌DataFrame.dot的一种方式:

df['E'] = df.isna().dot(df.columns)

print(df)

    A    B    C    D     E
0  NaN  NaN  NaN  NaN  ABCD
1  NaN    b    c  NaN    AD
2  NaN    2  NaN    d    AC
3    a    e  NaN    f     C
4    i    j    1  NaN     D

答案 1 :(得分:0)

IIUC,我们只能mapagg

df["null"] = (
    df.isnull()
    .apply(lambda x: x.map({True: x.name}))
    .stack(0)
    .groupby(level=0)
    .agg("".join)
)

print(df)

     A    B    C    D  null
0  NaN  NaN  NaN  NaN  ABCD
1  NaN    b    c  NaN    AD
2  NaN    2  NaN    d    AC
3    a    e  NaN    f     C
4    i    j    1  NaN     D