df = pd.DataFrame({'date': ['3/10/2000', '3/11/2000', '3/12/2000','3/13/2000','3/14/2000','3/15/2000','3/16/2000','3/17/2000','3/18/2000'],
'value': [2,NaN,NaN,NaN,NaN,NaN,NaN,NaN,25]})在这个dataframe中,我想用下面的逻辑来替换Nan值:在这种情况下,两个日期之间在值列不为Nan的天数上的差值是8天,即3/18/2000 - 3/10/2000 =8天。让我们假设δ= 23,我们从减去25-2中得到。我想将所有其他t天的non值替换为2+(delta)*(t/8),其中t是任意一天,在给定的两个非Nan值之间有一个nan值,我想要的值列的结果是:
发布于 2022-08-12 19:54:13
您可以将日期设置为timedelta,然后使用' index‘方法作为索引和interpolate:
df['value'] = (df
.assign(date=pd.to_datetime(df['date']))
.set_index('date')['value']
.interpolate('index')
.values
)产出:
date value
0 3/10/2000 2.000
1 3/11/2000 4.875
2 3/12/2000 7.750
3 3/13/2000 10.625
4 3/14/2000 13.500
5 3/15/2000 16.375
6 3/16/2000 19.250
7 3/17/2000 22.125
8 3/18/2000 25.000https://stackoverflow.com/questions/73338853
复制相似问题