如何解决将年度数据重新采样为具有远期价值的每日数据
我有2个数据帧(一个df且在系列中)。他们看起来像这样:
ranking
Date type
2009-12-31 AAB000001471 Q2
AAB000001513 Q1
AAB000002057 Q2
AAB000002164 Q2
AAB000003162 Q2
..
2020-12-31 AAB013530250 Q1
AAB013530706 Q1
AAB013531035 Q1
AAB135329261 Q1
AAB013536471 Q2
Name: Actif_net_part,Length: 59621,dtype: category
Categories (4,object): ['Q1' < 'Q2' < 'Q3' < 'Q4']
和:
base
Date type
0 2020-10-06 AAB000006710
1 2020-09-22 AAB000006710
2 2020-09-08 AAB000006710
3 2020-08-25 AAB000006710
4 2020-02-25 AAB000006710
... ... ...
11477259 2019-05-15 AAB013282712
11477260 2019-05-14 AAB013282712
11477261 2019-05-13 AAB013282712
11477262 2019-05-10 AAB013282712
11477263 2019-05-09 AAB013282712
11477264 rows × 2 columns
第一个是年度数据,而第二个是每日数据。 我想基于type / Date列合并这两个类,但是对于年度数据,请创建具有向前数据的每日数据。我的意思是: 2009-12-31 AAB000001471第二季度 2010-01-01 AAB000001471 Q2 .... 直到今年底我有了新的价值
我尝试过:
ddd = ranking.groupby(['type',pd.Grouper(level=0,freq='D')]).apply(lambda x: x.fillna(method='ffill'))
,但是它不起作用。我仍然有年度数据
谢谢
解决方法
将GroupBy.apply
与DataFrame.asfreq
一起使用:
print (ranking)
Date type
2009-12-31 AAB000001471 Q2
AAB000001513 Q1
AAB000002057 Q2
AAB000002164 Q2
AAB000003162 Q2
2020-12-31 AAB000001471 Q1
AAB000001513 Q1
AAB000002057 Q1
AAB000002164 Q1
AAB000003162 Q2
Name: Actif_net_part,dtype: object
ddd = (ranking.reset_index(level=1)
.groupby('type',group_keys=False)
.apply(lambda x: x.asfreq('d',method='ffill'))
.set_index('type',append=True)
.sort_index())
print (ddd)
Actif_net_part
Date type
2009-12-31 AAB000001471 Q2
AAB000001513 Q1
AAB000002057 Q2
AAB000002164 Q2
AAB000003162 Q2
... ...
2020-12-31 AAB000001471 Q1
AAB000001513 Q1
AAB000002057 Q1
AAB000002164 Q1
AAB000003162 Q2
[20095 rows x 1 columns]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。