是A.fillna(method='ffill')
用来替换后继值吗?我们如何在每一步中用负 -1 替换后续值?
问问题
129 次
1 回答
0
创建示例 df:
z=pd.DataFrame(np.linspace(1,10,10),columns=['test'])
z.iloc[2]=np.nan
z.iloc[7:]=np.nan
print(z)
test
0 1.0
1 2.0
2 NaN
3 4.0
4 5.0
5 6.0
6 7.0
7 NaN
8 NaN
9 NaN
为重复出现的 nan 创建一个代理列:
z['proxy'] = z.test.isnull().cumsum().diff().fillna(0)!=0
z['proxy'] = -1*(z.proxy.cumsum() -z.proxy.cumsum().where(~z.proxy).ffill().fillna(0))
重新计算 z.test:
z['test']=z.proxy+z.test.ffill()
结果df:
test proxy
0 1.0 -0.0
1 2.0 -0.0
2 1.0 -1.0
3 4.0 -0.0
4 5.0 -0.0
5 6.0 -0.0
6 7.0 -0.0
7 6.0 -1.0
8 5.0 -2.0
9 4.0 -3.0
删除代理:
z=z.drop(columns=['proxy'])
于 2018-09-28T14:32:10.550 回答