我有一个数据框如下:A,B,C,DNan,NaN,NaN,NaNNan,b,c,NaNNan,2,Nan,da,e,NaN,fi,j,1,NaN我想创建一个描述其他列中缺失模式的列 E,例如:列 E 将包含类似A,B,C,D,ENan,NaN,NaN,NaN,ABCDNan,1,2,NaN,ADNan,3,Nan,d,ACa,e,NaN,6,Ci,j,4,5,我试过df.isnull().sum(axis=1) 了,但这不考虑例如第 4 行和第 5 行中的顺序,它返回相同的值 1。如上所述,如何创建我想要的列?
2 回答
开满天机
TA贡献1786条经验 获得超13个赞
这是一种唱歌方式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
慕村9548890
TA贡献1884条经验 获得超4个赞
mapIIUC我们可以agg
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
添加回答
举报
0/150
提交
取消