Python 获取一年中第一个可用数据点/计算年初至今回报率
我需要计算给定数据集的年迄今相对回报率。我通常用这个简单的函数计算累积相对收益:Python 获取一年中第一个可用数据点/计算年初至今回报率,python,pandas,Python,Pandas,我需要计算给定数据集的年迄今相对回报率。我通常用这个简单的函数计算累积相对收益: def RelPerf(price): RelPerf = (price/price[0]) return RelPerf 问题是我需要在每年年初(今年第一个可用的数据点)设置价格,而不是“价格[0]”。由于数据集不包含一年中每一天的数据,我不能简单地使用+365之类的东西。所以问题是如何动态地将第一个可用数据点的位置输入到公式中 这是所用数据帧的一个简短示例: C
def RelPerf(price):
RelPerf = (price/price[0])
return RelPerf
问题是我需要在每年年初(今年第一个可用的数据点)设置价格,而不是“价格[0]”。由于数据集不包含一年中每一天的数据,我不能简单地使用+365之类的东西。所以问题是如何动态地将第一个可用数据点的位置输入到公式中
这是所用数据帧的一个简短示例:
CLOSE_SPX Close_iBoxx A_Returns B_Returns A_Vola B_Vola
2014-05-15 1870.85 234.3017 -0.009362 0.003412 0.170535 0.075468
2014-05-16 1877.86 234.0216 0.003747 -0.001195 0.170153 0.075378
2014-05-19 1885.08 233.7717 0.003845 -0.001068 0.170059 0.075384
2014-05-20 1872.83 234.2596 -0.006498 0.002087 0.170135 0.075410
2014-05-21 1888.03 233.9101 0.008116 -0.001492 0.169560 0.075326
2014-05-22 1892.49 233.5429 0.002362 -0.001570 0.169370 0.075341
2014-05-23 1900.53 233.8605 0.004248 0.001360 0.168716 0.075333
2014-05-27 1911.91 234.0368 0.005988 0.000754 0.168797 0.075294
2014-05-28 1909.78 235.4454 -0.001114 0.006019 0.168805 0.075474
2014-05-29 1920.03 235.1813 0.005367 -0.001122 0.168866 0.075451
2014-05-30 1923.57 235.2161 0.001844 0.000148 0.168844 0.075430
2014-06-02 1924.97 233.8868 0.000728 -0.005651 0.168528 0.075641
2014-06-03 1924.24 232.9049 -0.000379 -0.004198 0.167852 0.075267
对数据帧使用df
使用TimeGrouper对数据进行分组,以按年份进行分组
GroupedDat=df.groupby(pd.TimeGrouper('A'))
使用应用于组数据的转换lambda函数,使用调整后的close的YTD数据创建一个新列
df[“YTD”]=GroupedDat['CLOSE\u SPX'].转换(lambda x:x/x.iloc[0]-1.0)
MarkD提供了解决方案:我获得了每小时的数据,并发现使用以下命令更容易找到它:
df['2004'].first('1H')
也许这有助于通过搜索功能寻找解决方案的人