首页 > 解决方案 > 如果该行不是 nan,则将前几个角色的值设为该行的值

问题描述

我有一个如下所示的数据框:

df = pd.DataFrame([np.nan]*99,columns = ['col1'])

df.loc[23] = 70
df.loc[35] = 50
df.loc[90] = 81
df.loc[98] = 3

如何使新列 (col2) 的值成为 df col1 的前几 (x) 行的值成为具有值的行的值?例如,如果 x = 4,使第 20-23 行为 70,第 32-35 行为 50,第 87-90 行为 81,第 95-98 行为 3?

谢谢!

标签: pythonpandas

解决方案


如果缺少其他值,请使用带限制参数的回填:

df1 = df.bfill(limit=3)
print (df1.tail(15))

    col1
84   NaN
85   NaN
86   NaN
87  81.0
88  81.0
89  81.0
90  81.0
91   NaN
92   NaN
93   NaN
94   NaN
95   3.0
96   3.0
97   3.0
98   3.0

推荐阅读