gpt4 book ai didi

python - 单独替换pandas.dataframe中的NaN

转载 作者:行者123 更新时间:2023-11-30 09:01:17 25 4
gpt4 key购买 nike

我有一个 900 x 7 数据框,其中 3 个字段包含一些 NaN 值。

我没有简单地用某些特征平均值替换这些值,而是创建了一个函数,使用一种算法根据该行中的其他值来估计每个 NaN 的可能值。

如何使用自定义函数迭代每个 NaN 以更改其值?

我的函数采用行 ID、其他功能名称以及包含 NaN 的功能作为参数。

例如

custom_fillnan(id=0, ins=["val0", "val1", "val2"], out="valn")

示例数据框:

ID    val0    val1    val2    ...    valn
0 1 2 3 ... NaN
1 1 NaN 3 ... 4
2 0 0 NaN ... 1
...

最佳答案

IIUC 您可以将 applyaxis=1 结合使用,将 fillna 与您的自定义函数结合使用:

In [80]: df
Out[80]:
ID val0 val1 val2 valn
0 0 1 2 3 NaN
1 1 1 NaN 3 4
2 2 0 0 NaN 1


In [83]: df.apply(lambda x: x.fillna(pd.np.mean(x.iloc[1:])), axis=1)
Out[83]:
ID val0 val1 val2 valn
0 0 1 2.000000 3.000000 2
1 1 1 2.666667 3.000000 4
2 2 0 0.000000 0.333333 1

您可以使用您的函数来代替pd.np.mean。使用 x.iloc[1:] 是因为据我了解,您只想在函数中使用 val 列。

编辑

如果您想获取缺失值的列名称,您可以应用或使用该函数进行处理:

def func(x):
x.loc[x.isnull()] = x.index[x.isnull()]
return x

In [209]: df.apply(func, axis=1)
Out[209]:
ID val0 val1 val2 valn
0 0 1 2 3 valn
1 1 1 val1 3 4
2 2 0 0 val2 1

关于python - 单独替换pandas.dataframe中的NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34275316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com