Python 用一个简单的函数填充数据帧

Python 用一个简单的函数填充数据帧,python,pandas,dataframe,fillna,Python,Pandas,Dataframe,Fillna,我正在寻找一种使用简单函数[row-1].value+1填充DatFrame的NAs值的方法。 数据帧的特殊性在于它具有多个NAs 下面是我正在处理的数据帧类型的示例: import pandas as pd import numpy as np df = pd.DataFrame({'a':[7, 3, 12, 0, np.nan, np.nan], 'b':[0, 4, 8, np.nan, np.nan, np.nan],

我正在寻找一种使用简单函数[row-1].value+1填充DatFrame的NAs值的方法。 数据帧的特殊性在于它具有多个NAs

下面是我正在处理的数据帧类型的示例:

import pandas as pd
import numpy as np
df = pd.DataFrame({'a':[7, 3, 12, 0, np.nan, np.nan], 
                   'b':[0, 4, 8, np.nan, np.nan, np.nan], 
                   'c':[1, 2, 1, 4, 1, 1]})

Out[7]: 
      a    b    c
0   7.0  0.0  1.0
1   3.0  4.0  2.0
2  12.0  8.0  1.0
3   0.0  NaN  4.0
4   NaN  NaN  1.0
5   NaN  NaN  1.0
以下是我希望获得的输出:

Out[7]: 
      a     b     c
0   7.0   0.0   1.0
1   3.0   4.0   2.0
2  12.0   8.0   1.0
3   0.0   9.0   4.0
4   1.0  10.0   1.0
5   2.0  11.0   1.0

您可以尝试以下方法:

import pandas as pd
import numpy as np

df=pd.DataFrame({'a':[1, 2, np.nan, np.nan, 5, np.nan, 7]})
df

     a
0  1.0
1  2.0
2  NaN
3  NaN
4  5.0
5  NaN
6  7.0

df['a'] = df.groupby(df['a'].notnull().cumsum()).cumcount() + df['a'].ffill()
df

     a
0  1.0
1  2.0
2  3.0
3  4.0
4  5.0
5  6.0
6  7.0
更新您的数据帧

df = pd.DataFrame({'a':[7, 3, 12, 0, np.nan, np.nan], 
                   'b':[0, 4, 8, np.nan, np.nan, np.nan], 
                   'c':[1, 2, 1, 4, 1, 1]})

df_out = df.apply(lambda x: x.groupby(x.notnull().cumsum()).cumcount() + x.ffill())
输出:

      a     b  c
0   7.0   0.0  1
1   3.0   4.0  2
2  12.0   8.0  1
3   0.0   9.0  4
4   1.0  10.0  1
5   2.0  11.0  1

基本pandas:
df=df.fillna(df.shift()+1)
谢谢,它适用于下一行,但我的数据帧是我有多个NAs一个接一个。然后我必须多次运行这部分代码来填充所有值。我将定义一个循环,根据需要重复多次。请修复您的问题,以文本形式提供一些示例数据,有人会认真考虑发布答案。