寻找类似于DataFrame.nafill()的pandas函数

时间:2016-11-05 23:01:04

标签: python python-3.x pandas dataframe

我想应用一个像fillna()一样的函数,但取值不同于nan。不幸的是DataFrame.replace()在我的案例中不起作用。这是一个例子:给定一个DataFrame:

    df = pd.DataFrame([[1,2,3],[4,-1,-1],[5,6,-1]])

       0    1    2
    0  1  2.0  3.0
    1  4 -1.0 -1.0
    2  5  6.0 -1.0
    3  7  8.0  NaN

我正在寻找一个输出的函数:

       0    1    2
    0  1  2.0  3.0
    1  4  2.0  3.0
    2  5  6.0  3.0
    3  7  8.0  NaN

因此df.replace()to_replace=-1'method='ffill'不起作用,因为它需要与列无关的value来替换-1条目。在我的例子中,它是依赖于列的。我知道我可以用循环编码它,但我正在寻找一个有效的代码,因为它将应用于大型DataFrame。有什么建议?谢谢。

1 个答案:

答案 0 :(得分:3)

您只需将值替换为$notice,然后调用NaN

ffill

我认为你在想这个

修改

如果您已经有In [3]: df.replace(-1, np.NaN).ffill() Out[3]: 0 1 2 0 1 2 3 1 4 2 3 2 5 6 3 个值,那么创建一个布尔掩码,并在掩码的反转处再次使用NaN更新这些元素:

ffill

另一种方法(感谢评论中的@DSM)是使用In [15]: df[df == -1] = df[df != -1].ffill() df Out[15]: 0 1 2 0 1 2 3 1 4 2 3 2 5 6 3 3 7 8 NaN 基本上做同样的事情:

where