【发布时间】:2020-07-20 22:34:10
【问题描述】:
我有以下数据集:
import numpy as np
import pandas as pd
df = pd.DataFrame ({'Date':['2000-01-01', '2000-02-01', '2000-03-01','2000-04-01','2000-05-01',
'2000-01-01', '2000-02-01','2000-03-01'
],
'id':['1', '1', '1', '1','1','2', '2', '2'],
'error': [0, 0.8, 'nan', 'nan', 'nan', 2.5, 0.25, 'nan']
})
我需要将“nan”替换为先前值的总和,然后重新开始。例如,
如果 Date= '2000-03-01' 并且 id = 1,则错误 = 0.1 * 0.8 + 0.2 * 0 =0.08
如果 Date = '2000-04-01' 并且 id = 1,则错误 = 0.1 * 0.08 + 0.2 * 0.8 = 0.168
如果日期 = '2000-05-01 并且 id = 1,则错误 = 0.1 * 0.168 + 0.2 * 0.08 = 0.0328 等等
我尝试执行以下操作:
df['error'] = pd.to_numeric(df.error, errors = 'coerce')
df['error'] =(df.groupby('id')
.apply(lambda x: 0.1*x.error.shift(1) + 0.2 * x.error.shift(2).cumsum())
.reset_index('id', drop = True)
)
但它不起作用。我应该得到的数据如下:
【问题讨论】: