Foj*_*ojo 5 python numpy pandas
我有一个 Pandas 数据框,我想水平转发填充,但我不想转发填充超过每行中的最后一个条目。这是一些已停产的产品的时间序列定价数据,因此我不希望将记录的最后一个值向前填充到当前值。
FWDFILL.apply(lambda series: series.iloc[:,series.last_valid_index()].ffill(axis=1))
Run Code Online (Sandbox Code Playgroud)
^我包含的代码做了我想要的,但它是垂直的。这可能可以帮助人们作为起点。
>>> print(FWDFILL)
1 1 NaN NaN 2 NaN
2 NaN 1 NaN 5 NaN
3 NaN 3 1 NaN NaN
4 NaN NaN NaN NaN NaN
5 NaN 5 NaN NaN 1
Run Code Online (Sandbox Code Playgroud)
期望输出:
1 1 1 1 2 NaN
2 NaN 1 1 5 NaN
3 NaN 3 1 NaN NaN
4 NaN NaN NaN NaN NaN
5 NaN 5 5 5 1
Run Code Online (Sandbox Code Playgroud)
IIUC,您需要apply使用axis=1,因此您要应用于数据帧行而不是数据帧列。
df.apply(lambda x: x[:x.last_valid_index()].ffill(), axis=1)
Run Code Online (Sandbox Code Playgroud)
输出:
1 2 3 4 5
0
1 1.0 1.0 1.0 2.0 NaN
2 NaN 1.0 1.0 5.0 NaN
3 NaN 3.0 1.0 NaN NaN
4 NaN NaN NaN NaN NaN
5 NaN 5.0 5.0 5.0 1.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1081 次 |
| 最近记录: |