Gar*_*vey 7 python python-3.x pandas
我想用前N一行值的平均值填充缺失值,示例如下所示:
N=2
df = pd.DataFrame([[np.nan, 2, np.nan, 0],
[3, 4, np.nan, 1],
[np.nan, np.nan, np.nan, 5],
[np.nan, 3, np.nan, np.nan]],
columns=list('ABCD'))
Run Code Online (Sandbox Code Playgroud)
DataFrame如下:
A B C D
0 NaN 2.0 NaN 0
1 3.0 4.0 NaN 1
2 NaN NaN NaN 5
3 NaN 3.0 NaN NaN
Run Code Online (Sandbox Code Playgroud)
结果应该是:
A B C D
0 NaN 2.0 NaN 0
1 3.0 4.0 NaN 1
2 NaN (4+2)/2 NaN 5
3 NaN 3.0 NaN (1+5)/2
Run Code Online (Sandbox Code Playgroud)
我想知道是否有优雅和快速的方法来实现这个没有循环.
rolling+ mean+shiftNaN在前两个值之一为空的情况下,您将需要修改以下逻辑来解释平均值和另一个值.
df = df.fillna(df.rolling(2).mean().shift())
print(df)
A B C D
0 NaN 2.0 NaN 0.0
1 3.0 4.0 NaN 1.0
2 NaN 3.0 NaN 5.0
3 NaN 3.0 NaN 3.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |