Pandas 用最后一个已知值填充空尾随值

2023-12-07

我有几个具有不同结束时间段的专栏。

需要用最后一个已知值填充空数据。

有没有一种 Pandas 方法可以做到这一点,而无需在结束日期上循环?

我需要过去 4 个月的 Gain_sum_y 等于 -57129.0。

        gain_sum_x  gain_sum_y
month                             
2014-09-30      -97747    -41355.0
2014-10-31     -112928    -47394.0
2014-11-30     -131638    -57129.0
2014-12-31     -161370         0.0
2015-01-31     -168832         0.0
2015-02-28     -151930         0.0
2015-03-31     -162077         0.0

thanks.


我想你需要replace with ffill (fillna with method='ffill') 如果想全部替换0最后一个非值0 values:

df = df.replace(0, np.nan).ffill()
print (df)
        month  gain_sum_x  gain_sum_y
0  2014-09-30      -97747    -41355.0
1  2014-10-31     -112928    -47394.0
2  2014-11-30     -131638    -57129.0
3  2014-12-31     -161370    -57129.0
4  2015-01-31     -168832    -57129.0
5  2015-02-28     -151930    -57129.0
6  2015-03-31     -162077    -57129.0

如果您想指定要替换的列(谢谢约翰·高尔特):

df.replace({'gain_sum_y': {0: np.nan}}).ffill()

样本有多个0:

print (df)
            gain_sum_x  gain_sum_y
month                             
2014-09-30      -97747    -41355.0
2014-10-31           0         0.0
2014-11-30           0    -57129.0
2014-12-31     -161370         0.0
2015-01-31     -168832         0.0
2015-02-28           0         0.0
2015-03-31     -162077         0.0

df1 = df.replace(0,np.nan).ffill()
print (df1)
            gain_sum_x  gain_sum_y
month                             
2014-09-30    -97747.0    -41355.0
2014-10-31    -97747.0    -41355.0
2014-11-30    -97747.0    -57129.0
2014-12-31   -161370.0    -57129.0
2015-01-31   -168832.0    -57129.0
2015-02-28   -168832.0    -57129.0
2015-03-31   -162077.0    -57129.0

但如果需要只更换最后一个0 need last_valid_index用于替换最后一个0 to NaN:

df2 = df.replace(0,np.nan).apply(lambda x: x.loc[:x.last_valid_index()].fillna(0)).ffill()
print (df2)
            gain_sum_x  gain_sum_y
2014-09-30    -97747.0    -41355.0
2014-10-31         0.0         0.0
2014-11-30         0.0    -57129.0
2014-12-31   -161370.0    -57129.0
2015-01-31   -168832.0    -57129.0
2015-02-28         0.0    -57129.0
2015-03-31   -162077.0    -57129.0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas 用最后一个已知值填充空尾随值 的相关文章

随机推荐