Skip to main content
 首页 » 编程设计

python之如果在任何其他列中有相应的 NaN,我如何以非迭代方式将 NaN 放置在 DataFrame 列中

2025年05月04日19findumars

给定一个 3 列的 DataFrame,df:

    a    b      c 
0 NaN    a   True 
1   1    b   True 
2   2    c  False 
3   3  NaN  False 
4   4    e   True 
 
[5 rows x 3 columns] 

我想在任何其他列中存在 NaN 的每一行的 c 列中放置一个NaN。我目前的做法如下:

for col in df: 
    df['c'][pd.np.isnan(df[col])] = pd.np.nan 

我强烈怀疑有一种方法可以通过逻辑索引来完成此操作,而不是像我目前正在做的那样遍历列。

这是怎么做到的?

谢谢!

请您参考如下方法:

如果你不关心bool/float的问题,我建议:

>>> df.loc[df.isnull().any(axis=1), "c"] = np.nan 
>>> df 
    a    b   c 
0 NaN    a NaN 
1   1    b   1 
2   2    c   0 
3   3  NaN NaN 
4   4    e   1 
 
[5 rows x 3 columns] 

如果你真的这样做了,那么从你的框架 df 重新开始你可以:

>>> df["c"] = df["c"].astype(object) 
>>> df.loc[df.isnull().any(axis=1), "c"] = np.nan 
>>> df 
    a    b      c 
0 NaN    a    NaN 
1   1    b   True 
2   2    c  False 
3   3  NaN    NaN 
4   4    e   True 
 
[5 rows x 3 columns]