我有一个包含三列(时间戳,温度和水位)的数据框。 我想要做的是将水位列中的所有NaN值替换为内插值。例如:
水位值始终减小直到为0。因此,水位不能为负。另外,如果水位保持不变,则插值也应该相同。理想情况下,插值(两个可用水位值之内)之间的步长应该相同。
到目前为止,我尝试过的是:
df['waterlevel'].interpolate(method ='linear', limit_direction ='backward') # backwards because the waterlevel value is always decreasing.
这不起作用。执行完此行后,每个NaN值的参数“ forward”都变为0,而NaN的参数“ backward”则保持为NaN。
和
df = df['waterlevel'].assign(InterpolateLinear=df.target.interpolate(method='linear'))
关于如何解决此问题的任何建议?
答案 0 :(得分:0)
我假设NaN是np.nan
对象
import pandas as pd
import numpy as np
df = pd.DataFrame({"waterlevel": ['A',np.nan,np.nan,'D'],"interpolated values":['Ai','Bi','Ci','D']})
print(df)
df.loc[df['waterlevel'].isnull(),'waterlevel'] = df['interpolated values']
print(df)
O / P:
waterlevel interpolated values
0 A Ai
1 NaN Bi
2 NaN Ci
3 D D
waterlevel interpolated values
0 A Ai
1 Bi Bi
2 Ci Ci
3 D D