我在 pandas 中有一个数据框,其中有几列我想转发填充值。目前我正在做:
columns = ['a', 'b', 'c']
for column in columns:
df[column].fillna(method='ffill', inplace=True)
...但是由于列中的系列长度不同,因此在其中一些列的末端留下了填充值的长尾。由于某些系列中的间隙相当大,因此我无法使用 fillna 的 limit 参数,而不在系列上留下填充值的长尾。
是否可以向前填充除最后一个值之外的每列中的值?谢谢!
您可以使用last_valid_index
在 lambda 函数中填充到该点。
df = pd.DataFrame({
'A': [1, None, None, None],
'B': [1, 2, None, None],
'C': [1, None, 3, None],
'D': [1, None, None, 4]})
>>> df
A B C D
0 1 1 1 1
1 NaN 2 NaN NaN
2 NaN NaN 3 NaN
3 NaN NaN NaN 4
>>> df.apply(lambda series: series.loc[:series.last_valid_index()].ffill())
A B C D
0 1 1 1 1
1 NaN 2 1 1
2 NaN NaN 3 1
3 NaN NaN NaN 4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)