有人给我布置了一道作业题。以下是对我的问题的描述:
在下面的单元格中,您有一个由10列浮点数组成的DataFrame df。每行中有5个条目是NaN值。
对于DataFrame的每一行,找到包含第三个NaN值的列。
您应该返回一系列列标签:
e, c, d, h, d
nan = np.nan
data = [[0.04, nan, nan, 0.25, nan, 0.43, 0.71, 0.51, nan, nan],
[ nan, nan, nan, 0.04, 0.76, nan, nan, 0.67, 0.76, 0.16],
[ nan, nan, 0.5 , nan, 0.31, 0.4 , nan, nan, 0.24, 0.01],
[0.49, nan, nan, 0.62, 0.73, 0.26, 0.85, nan, nan, nan],
[ nan, nan, 0.41, nan, 0.05, nan, 0.61, nan, 0.48, 0.68]]
columns = list('abcdefghij')
df = pd.DataFrame(data, columns=columns)
# write a solution to the question here
这是我的解决方案:
result = df.apply(lambda row: row.isna().idxmax(), axis=1)
print(result)
我的代码返回
b, a, a, a, b, a
,而期望的输出为
e、 c、d、h、d
我的解决方案返回第一个NaN的索引,但根据问题,我希望每行中都有第三个NaN。我该怎么做?或者,是否有另一种解决方案可以提供所需的输出。