Python 如何迭代数据帧并仅替换NaN值?

Python 如何迭代数据帧并仅替换NaN值?,python,pandas,dataframe,Python,Pandas,Dataframe,我目前正在尝试编写一个循环,用于修改数据帧df2,如下所示: Date Portfoliovalue 0 2021-05-01 50000.0 1 2021-05-02 NaN 2 2021-05-03 NaN 3 2021-05-04 NaN 4 2021-05-05 NaN for i in df2[df2['Portfoliovalue'].isna()]: new_value = 51344 df2.iloc[i][1] = [

我目前正在尝试编写一个循环,用于修改数据帧df2,如下所示:

    Date    Portfoliovalue
0   2021-05-01  50000.0
1   2021-05-02  NaN
2   2021-05-03  NaN
3   2021-05-04  NaN
4   2021-05-05  NaN
for i in df2[df2['Portfoliovalue'].isna()]:
    new_value = 51344

  df2.iloc[i][1] = [new_value]
现在我想用一个名为new_value(是整数)的变量替换NaN值。新值是迭代另一个数据帧列的另一个for循环的总和。代码如下:

    Date    Portfoliovalue
0   2021-05-01  50000.0
1   2021-05-02  NaN
2   2021-05-03  NaN
3   2021-05-04  NaN
4   2021-05-05  NaN
for i in df2[df2['Portfoliovalue'].isna()]:
    new_value = 51344

  df2.iloc[i][1] = [new_value]
但是,代码返回相同的数据帧,并告诉我以下内容:


由于我对pandas还很陌生,我想知道我需要更改什么,以便将变量分配给实际的数据帧df2?

您可以在切片上使用.copy()。但是你可以做得更好,如果你能说出什么是新的值和当前的值,你会在这里得到更好的答案。我仍然在计算得到新值的函数,但是它将是一个整数。我已经相应地更新了它。然后您可以使用
df2['Portfoliovalue'].fillna(new_value,inplace=True)
非常感谢!