使用带有选定编号的填充

时间:2018-12-02 13:09:33

标签: python pandas

我有一个像这样的数据框列:

 Year   Rank
  2017    Nan
  2017   Nan
  2017    3
  2017    4
  2017    5
      .
      .
  2016    Nan
  2016    Nan
  2016    3
  2016    4
  2016    5
     .
     .

我可以使用bfill替换前两个值,以便我的列看起来像这样...

  Year   Rank
  2017    1
  2017    2
  2017    3
  2017    4
  2017    5
      .
      .
  2016    1
  2016    2
  2016    3
  2016    4
  2016    5
     .
     .

或者有比使用填充更简单的方法吗?预先感谢

2 个答案:

答案 0 :(得分:0)

从Pandas DataFrame.fillna中查找该文档

答案 1 :(得分:0)

fillna中使用参数limit

df['Rank'] = df['Rank'].fillna(1, limit=1)
df['Rank'] = df['Rank'].fillna(2, limit=2)  

...以及每组必要的调用函数:

def f(x):
    x = x.fillna(1, limit=1)
    x = x.fillna(2, limit=2)   
    return x

df['New'] = df.groupby('Year')['Rank'].apply(f)
print (df)
   Year  Rank   New
0  2017   NaN   1.0
1  2017   NaN   2.0
2  2017   3.0   3.0
3  2017   4.0   4.0
4  2017   5.0   5.0
5  2016   NaN   1.0
6  2016   NaN   2.0
7  2016   5.0   5.0
8  2016   6.0   6.0
9  2016  10.0  10.0