我有一个包含多个列的数据框,其中一些包含NaN值。我想为每一行创建另一列,其中包含总列数减去第一个非NaN值之前的NaN值数。
原始数据框:
ID Value0 Value1 Value2 Value3
1 10 10 8 15
2 NaN 45 52 NaN
3 NaN NaN NaN NaN
4 NaN NaN 100 150
额外的列看起来像:
ID NewColumn
1 4
2 3
3 0
4 2
提前致谢!
答案 0 :(得分:2)
ID
argmax
argmax
查找第一个非空值df.assign(
NewColumn=
df.shape[1] - 1 -
df.set_index('ID').assign(notnull=1).notnull().values.argmax(1)
)
ID Value0 Value1 Value2 Value3 NewColumn
0 1 10.0 10.0 8.0 15.0 4
1 2 NaN 45.0 52.0 NaN 3
2 3 NaN NaN NaN NaN 0
3 4 NaN NaN 100.0 150.0 2