复数据帧的重索引与插值

2024-04-23 10:12:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据帧,看起来像:

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


Tags: 数据函数importdataframepandasdfdateas
1条回答
网友
1楼 · 发布于 2024-04-23 10:12:27

您可以先将数据分组,然后使用^{}^{}来设置值。你知道吗

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个月的重采样率,但是如果您的实际数据略有不同,您可以使用一些逻辑来计算利息的时间间隔(天、月、年……),并将其用作重采样周期。你知道吗

相关问题 更多 >