当前位置: 首页 > 面试题库 >

Python-如何用pandasDataFrame中的先前值替换NaN?

孙凌
2023-03-14
问题内容

假设我有一个带有NaNs 的DataFrame :

>>> import pandas as pd
>>> df = pd.DataFrame([[1, 2, 3], [4, None, None], [None, None, 9]])
>>> df
    0   1   2
0   1   2   3
1   4 NaN NaN
2 NaN NaN   9

我需要做的是用上方的同一列中NaN的第一个非NaN值替换每个值。假设第一行永远不会包含NaN。因此,对于前面的示例,结果将是

   0  1  2
0  1  2  3
1  4  2  3
2  4  2  9

我可以遍历整个DataFrame的逐列,逐元素并直接设置值,但是是否有一种简单的方法(最佳无循环方法)来实现这一点?


问题答案:

你可以fillnaDataFrame上使用该方法,并将该方法指定为ffill(正向填充):

>>> df = pd.DataFrame([[1, 2, 3], [4, None, None], [None, None, 9]])
>>> df.fillna(method='ffill')
   0  1  2
0  1  2  3
1  4  2  3
2  4  2  9

这个方法

将上一个有效观察结果传播到下一个有效观察结果

相反,还有一种bfill方法。

此方法不会就地修改DataFrame-你需要将返回的DataFrame重新绑定到变量,或者指定inplace=True

df.fillna(method='ffill', inplace=True)


 类似资料:
  • 我的数据帧中有一个值列表,我想用空字符串替换NaN值。 到目前为止,我所尝试的都不起作用:

  • 问题内容: 我有以下数据框: 如何使用熊猫用先前的非零值填充零?是否有不仅仅用于“ NaN”的fillna? 输出应如下所示: (在此之前曾问过这个问题,在此之前,用最后一个非零值填充1d numpy数组的零值, 但他只是在寻求numpy解决方案) 问题答案: 你可以用与 要获取numpy数组,请继续

  • 我有一个数据记录就像。data1=ID A B C D O T1 1 3 3 2 1 T2 2 4 2 3 3 0 T3 4 1 1 4 0 T4 5 2 4 5 0 T5 3 5 5 1 1 而其他数据是。 怎么做??

  • 问题内容: 我是pandas的新手,我正在尝试在Dataframe中加载csv。我的数据缺少表示为的值?,而我正尝试将其替换为标准的Missing值-NaN 请帮助我。我曾尝试阅读过Pandas文档,但无法遵循。 数据 成人数据 问题答案: 您可以使用: 或整个df: 更新 好的,我已经解决了您的问题,默认情况下,如果您不传递分隔符,则将逗号作为分隔符。 您的数据,尤其是一行有问题的示例: 实际上

  • 我有一个如下的数据帧 我想以通用方式替换缺少的值,即。为此,我创建了一个函数,如下所示 当我应用这个函数时,如下所示 我得到的数据帧如下 因此,它实际上正确地删除了列,但未能删除列。我知道过去有关于这个话题的讨论(这里)。我还是可能错过了什么?

  • 问题内容: 我有一个列表,我想用condition()返回True的None替换值。 例如,如果条件检查bool(item%2)应该返回: 最有效的方法是什么? 问题答案: 使用列表理解来构建新列表: 您可以根据需要修改原始列表,但实际上并不能节省时间: 以下是(Python 3.6.3)演示非节省时间的时间: 和Python 2.7.6计时: