我有一个包含两列和一个这样的索引的数据框
Term Yield diff
Index
1 day 0.083333 0.0169 NaN
1MO 0.250000 0.0174 0.003000
3MO 0.500000 0.0192 0.007200
6MO 1.000000 0.0204 0.002400
1Y 2.000000 0.0228 0.002400
2Y 3.000000 0.0241 0.001300
3Y 5.000000 0.0261 0.001000
5Y 7.000000 0.0274 0.000650
7Y 10.000000 0.0282 0.000267
10Y 20.000000 0.0294 0.000120
13Y 30.000000 0.0306 0.000120
差异是通过
计算的step_x['diff'] = (StepX_Value['Yield'] - StepX_Value['Yield'].shift(1))/(StepX_Value['Term'] - StepX_Value['Term'].shift(1))
我必须编写一个函数,该函数具有基于变量frequency
,OAS
和另一个数据框列df['Time']
的复杂公式
如果频率为2( 2表示6个月/ 1表示1年/ 12表示1个月/ 4表示每季度),则我必须选择1day and 1MO
行,{{1 }}一次,1Y and 2Y
两次(因为一年中有两个6个月),2Y and 3Y
两次(因为其中包含四个6个月)
如果频率为1,那么我必须选择3Y and 5Y
,1day and 1MO
行的值一次,1Y and 2Y
一次和2Y and 3Y
两次的值(因为总计年有两年)
并像这样处理值,这是frq = 2的示例
3Y and 5Y
如果frq = 12,我应该使用1MO 1次,3个月3次,6个月6次,依此类推。
计算应完成,直到达到df ['time']
的长度为止。我如何将此编写为函数?有人能帮我吗。我觉得这很复杂。