我有一个pandas数据框,如下所示:
import pandas as pd
df= pd.DataFrame({'Date':['2016-12-31','2018-12-31','2017-06-30','2019-06-30',],'Business':['FRC','FICC','FRC','FICC']\
,'Amount':[10,100,20,200]})
df
Amount Business Date
0 10 FRC 2016-12-31
1 100 FICC 2018-12-31
2 20 FRC 2017-06-30
3 200 FICC 2019-06-30
我想使用重新索引和插值函数来获取输出,例如:
import pandas as pd
df= pd.DataFrame({'Date':['2016-12-31','2018-12-31','2017-06-30','2019-06-30','2017-03-31','2019-03-31'],'Business':['FRC','FICC','FRC','FICC','FRC','FICC']\
,'Amount':[10,100,20,200,15,150]})
df
Amount Business Date
0 10 FRC 2016-12-31
1 100 FICC 2018-12-31
2 20 FRC 2017-06-30
3 200 FICC 2019-06-30
4 15 FRC 2017-03-31
5 150 FICC 2019-03-31
本质上,我需要将数据帧划分为两个簇,并分别对每个簇使用插值函数。因此,FRC簇的插值为15,FICC簇的插值为150
答案 0 :(得分:1)
您可以先对数据进行分组,然后使用resample
和interpolate
来设置值。
out = pd.DataFrame()
businesses = df.groupby('Business')
for idx, business in businesses:
name = business.Business.unique()[0]
temp = business.set_index('Date').resample('3M').interpolate()
temp.Business = name
out = out.append(temp)
out = out.reset_index(drop=True)
out
Date Amount Business
0 2018-12-31 100.0 FICC
1 2019-03-31 150.0 FICC
2 2019-06-30 200.0 FICC
3 2016-12-31 10.0 FRC
4 2017-03-31 15.0 FRC
5 2017-06-30 20.0 FRC
我根据您的示例解释了3个月的重新采样率,但如果您的实际数据略有不同,您可以设置一些逻辑来计算感兴趣的时间间隔(天,月,年......)并使用那是你的重新采样时期。