我在 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)