前向填充python pandas数据帧中除最后一个值之外的所有值

use*_*046 6 python pandas

我在 Pandas 中有一个数据框,其中有几列我想转发填充值。目前我正在做:

columns = ['a', 'b', 'c']
for column in columns:
    df[column].fillna(method='ffill', inplace=True)
Run Code Online (Sandbox Code Playgroud)

...但是因为列中的系列长度不同,所以在其中一些的末端留下填充值的长尾。因为某些系列中的差距非常大,所以我不能使用 fillna 的限制参数,而不会在系列上留下填充值的长尾。

除了最后一个值外,是否可以向前填充每列中的值?谢谢!

Ale*_*der 10

You can use last_valid_index in a lambda function to just ffill up to that point.

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
Run Code Online (Sandbox Code Playgroud)