【发布时间】:2020-12-06 18:32:12
【问题描述】:
我有一个看起来像这样的数据框
pd.DataFrame({'A': ['C1', 'C1', 'C1', 'C1', 'C2', 'C2', 'C3', 'C3'],
...: 'date': [date(2019, 12, 31), date(2018, 12, 31), date(2017, 12, 31), date(2016, 12, 31), date(2017, 12, 31), date(2016, 12, 31), date(2018, 12, 31), date(2016, 12, 31)],
...: 'value': [9, 9, 8, 4, 8, 3, 6, 4]})
Out[13]:
A date value
0 C1 2019-12-31 9
1 C1 2018-12-31 9
2 C1 2017-12-31 8
3 C1 2016-12-31 4
4 C2 2017-12-31 8
5 C2 2016-12-31 3
6 C3 2018-12-31 6
7 C3 2016-12-31 4
first_year = date(2016, 12, 31)
last_year = date(2019, 12, 31)
对于每个组,我需要在“A”列中为每个组添加缺失的年份,并取上一年的“值”。我想通过输入变量说我的第一年和最后一年应该是什么。我生成的数据框应该是这样的
A date value
0 C1 2019-12-31 9
1 C1 2018-12-31 9
2 C1 2017-12-31 8
3 C1 2016-12-31 4
4 C2 2019-12-31 8
5 C2 2018-12-31 8
6 C2 2017-12-31 8
7 C2 2016-12-31 3
8 C3 2019-12-31 6
9 C3 2018-12-31 6
10 C3 2017-12-31 4
11 C3 2016-12-31 4
以下逻辑适用(按 A 列中的组)
C1 = 2016 年至 2019 年之间的所有年份均已可用
C2 = 缺少 2018 年和 2019 年,需要添加并从 2017 年的最后一个可用年份获取值 = 8
C3 = 缺少 2017 年,从 2016 年获取值。缺少 2019 年,从 2018 年获取值
【问题讨论】:
标签: python pandas pandas-groupby