如何在熊猫中使用 python 循环替换缺失值? [关闭]

Posted

技术标签:

【中文标题】如何在熊猫中使用 python 循环替换缺失值? [关闭]【英文标题】:How can I replace missing values using python loops in pandas? [closed] 【发布时间】:2019-05-29 14:33:59 【问题描述】:

我有一个这样的数据框

df = pd.DataFrame(A:[1,2,'NaN',3,4,'Nan'],B:[2,'NaN',3,'NaN',9])

现在的问题是我必须通过定义一个函数并使用循环来解决它们来替换 NaN

我该怎么做?

【问题讨论】:

使用循环执行此操作很笨拙。为什么要坚持? 你不能有这样的数据框。 AB 未定义且列的长度不匹配。另外,您确定您有 'NaN' string 值吗?请显示预期结果。 错误地我错过了 B 列中的一个值,它是 B:[2,'NaN',3,'NaN',9,6],我想知道如果它必须使用定义的函数来解决。我们如何定义 A 列和 B 列,您能帮我解决一下吗? 【参考方案1】:

我无法想象为什么这会在实践中明确地使用循环来完成,但它实际上非常简单。遍历列和行,随时替换值。

import numpy as np
import pandas as pd

def painful_fillna(df, fillvalue=0):
    df = df.copy()
    for col in df.columns:
        for i, value in enumerate(df[col].values):
            if np.isnan(value):
                df[col][i] = fillvalue
    return(df)

df = pd.DataFrame('A':[1,2,'NaN',3,4,'NaN'],'B':[2,'NaN',3,'NaN',9, 'NaN'])
df = df.convert_objects(convert_numeric=True)
painful_fillna(df)

上述函数在我的机器上的平均运行时间是 1.05 毫秒。 df.fillna(0) 的平均运行时间为 278 µs。

我也解决了上面的一些问题: 1. 将 A 和 B 替换为 'A' 和 'B'。 2. B 中添加了一个缺失值('NaN') 3.字符串'NaN's被转换为np.NaN

【讨论】:

【参考方案2】:

这是一个类似的问题,有几个答案:Iterating over rows and columns in Pandas

附言您可以先使用不同的术语搜索此站点并尝试找到答案。

【讨论】:

以上是关于如何在熊猫中使用 python 循环替换缺失值? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在熊猫数据框中查找缺失的索引值?

python 显示大熊猫和具有缺失值的numpy之间的协方差估计的不同方法。

如何处理python scikit NMF中的缺失值

如何用熊猫(python)中的其他值替换NAN [重复]

如何用python中的方程替换数据框中的缺失值

如何按“熊猫”中的列获取缺失/NaN 数据的汇总计数?