如何使用带有 pandas apply 的 lambda 函数遍历数组

How to iterate over an array using a lambda function with pandas apply

我有以下数据集:

     0    1     2   
0   2.0  2.0    4   
0   1.0  1.0    2   
0   1.0  1.0    3   
3   1.0  1.0    5   
4   1.0  1.0    2   
5   1.0  NaN    1   
6   NaN  1.0    1   

我想要做的是插入一个遍历每一行的新列,如果有 NaN 则给它一个 0,如果没有则复制列“2”中的值以获取此值:

     0    1     2   3
0   2.0  2.0    4   4
0   1.0  1.0    2   2
0   1.0  1.0    3   3
3   1.0  1.0    5   5
4   1.0  1.0    2   2
5   1.0  NaN    1   0
6   NaN  1.0    1   0

以下代码是我目前所拥有的代码,它工作正常但不会遍历“2”列的值。

df.isna().sum(axis=1).apply(lambda x: df[2].iloc[x] if x==0 else 0)

如果我使用 df.iloc[x] 我得到

0    4
1    4
2    4
3    4
4    4
5    0
6    0

如何遍历“2”列?

使用 np.whereisnaany 尝试以下代码:

>>> df['3'] = np.where(df[['0', '1']].isna().any(1), 0, df['2'])
>>> df
     0    1  2  3
0  2.0  2.0  4  4
0  1.0  1.0  2  2
0  1.0  1.0  3  3
3  1.0  1.0  5  5
4  1.0  1.0  2  2
5  1.0  NaN  1  0
6  NaN  1.0  1  0
>>>