以下代码行将 2020 年 4 月的值替换为大熊猫数据框中前四年同月的平均值。
df.loc[df['Time'] == '2020-04-30', 'value'] = df.loc[df['column'].isin(['2019-04-30', '2018-04-30', '2017-04-30', '2016-04-30' ]), 'value'].mean()
我想在 5 月、6 月、7 月等日做同样的操作,并开始处理 for 循环。我之前没有使用四个不同的值进行循环,我尝试了上述方法。但它似乎只适用于第一次迭代?我错过了什么?
date = [('2020-04-30', '2019-04-30', '2018-04-30', '2017-04-30', '2016-04-30'),
('2020-05-30', '2019-05-30', '2018-05-30', '2017-05-30', '2016-05-30')]
for i, j, k, l, m in date:
df1.loc[df1['Time'] == i, 'AF_ARBETSLOSA'] = df1.loc[df1['Time'].isin([j, k, l, m]), 'AF_ARBETSLOSA'].mean()
我也试过这个,但返回错误“长度必须匹配”。
y2020 = [('2020-04-30', '2020-05-30', '2020-06-30', '2020-07-30')]
y2019 = [('2019-04-30', '2019-05-30', '2019-06-30', '2019-07-30')]
y2018 = [('2018-04-30', '2018-05-30', '2018-06-30', '2018-07-30')]
y2017 = [('2017-04-30', '2017-05-30', '2017-06-30', '2017-07-30')]
y2016 = [('2016-04-30', '2016-05-30', '2016-06-30', '2016-07-30')]
for i, j, k, l, m in zip(y2020, y2019, y2018, y2017, y2016):
df1.loc[df1['Time'] == i, 'AF_ARBETSLOSA'] = df1.loc[df1['Time'].isin([j, k, l, m]), 'AF_ARBETSLOSA'].mean()
我的数据如下所示:
n
Time
1994-01-31 636790
1994-02-28 622556
1994-03-31 609128
1994-04-30 588751
1994-05-31 579768