python - 用上一年同月的值填充列
问题描述
如何使用上一年同月的值填写下表中 2020 年的值:
Category Month Year Value
A 1 2019 15
B 2 2019 20
A 2 2019 90
A 3 2019 50
B 4 2019 40
A 5 2019 20
A 6 2019 15
A 7 2019 17
A 8 2019 18
A 9 2019 12
A 10 2019 11
A 11 2019 19
A 12 2019 15
A 1 2020 18
A 2 2020 53
A 3 2020 80
最终期望的结果如下:
Category Month Year Value
A 1 2019 15
B 2 2019 20
A 2 2019 90
A 3 2019 50
B 4 2019 40
A 4 2019 40
A 5 2019 20
A 6 2019 15
A 7 2019 17
A 8 2019 18
A 9 2019 12
A 10 2019 11
A 11 2019 19
A 12 2019 15
A 1 2020 18
A 2 2020 53
A 3 2020 80
B 4 2020 40
A 4 2020 40
A 5 2020 20
A 6 2020 15
A 7 2020 17
A 8 2020 18
A 9 2020 12
A 10 2020 11
A 11 2020 19
A 12 2020 15
我尝试使用 pandas groupby 但不确定这是否是正确的方法。
解决方案
IIUC 我们使用pivot
then ffill
withstack
s=df.pivot_table(index=['Category','Year'],columns='Month',values='Value').groupby(level=0).ffill().stack().reset_index()
Category Year level_2 0
0 A 2019 1 15.0
1 A 2019 2 90.0
2 A 2019 3 50.0
3 A 2019 5 20.0
4 A 2019 6 15.0
5 A 2019 7 17.0
6 A 2019 8 18.0
7 A 2019 9 12.0
8 A 2019 10 11.0
9 A 2019 11 19.0
10 A 2019 12 15.0
11 A 2020 1 18.0
12 A 2020 2 53.0
13 A 2020 3 80.0
14 A 2020 5 20.0
15 A 2020 6 15.0
16 A 2020 7 17.0
17 A 2020 8 18.0
18 A 2020 9 12.0
19 A 2020 10 11.0
20 A 2020 11 19.0
21 A 2020 12 15.0
22 B 2019 2 20.0
23 B 2019 4 40.0
推荐阅读
- javascript - 使用路径访问对象的一部分
- javascript - 如何使用 Javascript/Jquery 根据 SharePoint 上的父子关系自动增加列
- python - 通过使用 Python Glom 过滤其他属性的列表来获取嵌套属性的值
- c++ - 具有抽象参数的专用函数与广义函数的上下文
- arrays - 如何从另一个数组中的数组执行“NOT IN”聚合(MongoDB)
- sql-server - Azure SQL 自动化存储过程
- c++ - 为什么我不能使用 _mm_sin_pd?
- gcc - 如何在 GCC 中编写 .syntax 统一的 UAL ARMv7 内联汇编?
- javascript - 未找到 VueJS Grpc-Web 模块
- java - 带有参数化 bean 类的托管 bean 必须是 @Dependent:class org.apache.cxf.jaxrs.provider.DataSourceProvider