Return 使用 fillna() python 后的变化值 pandas

Return the changed values after using fillna() python's pandas

我在数据框中使用 fillna() 将一列中的空值更改为另一列中的另一列空值,但我似乎找不到打印更改后的值的方法。我已经尝试遍历 fillna() 但这并不能解决问题。

df.column_with_nan.fillna(column_to_use_as_nan_replacement, inplace=True)

我在想也许我可以 运行 新更改的列与旧的未更改列相对照,但我想知道是否有更简单的方法。

有什么建议吗?

谢谢!

我不知道有什么 non-hacky 方法可以直接打印更改后的值,但是您可以使用 pandas.Series.compare() 来获取更改后的值。就这样

tmp = pd.Series(df1.column_with_nan.copy())
df.row_with_nan.fillna(column_to_use_as_nan_replacement, inplace=True)
print(tmp.compare(df.column_with_nan))

您还可以 运行 df.compare 获取完整数据帧。

您可以在替换值之前创建一个掩码:

mask = df["col_with_nan"].isna()

替换 nan 值后,您可以像这样访问更改的行:

df[mask]

示例:

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "col_with_nan": [np.nan, 1, 1, 1, np.nan, 1, 1, 1, np.nan],
        "column_to_use_as_nan_replacement": [11, 22, 33, 44, 55, 66, 77, 88, 99],
    }
)
print(df)
mask = df["col_with_nan"].isna()
df.col_with_nan.fillna(df.column_to_use_as_nan_replacement, inplace=True)
print(df)
print(df[mask])