df = name description curve tenor rates
IND 3M ZAR_3M 0.25 6.808000088
IND 2Y ZAR_3M 2 6.483012199
IND 3Y ZAR_3M 3 6.565002918
IND 4Y ZAR_3M 4 6.694129944
IND 5Y ZAR_3M 5 6.83951807
IND 3M CAD_OIS 0.25 1.738620043
BHU 6M CAD_OIS 0.5 1.718042016
IND 9M CAD_OIS 0.75 1.697247028
IND 1Y CAD_OIS 1 1.67719996
IND 18M CAD_OIS 1.5 1.631257057
IND 2Y CAD_3M 2 1.906309009
IND 3y CAD_3M 3 1.855569959
IND 4Y CAD_3M 4 1.830132961
BHU 5Y CAD_3M 5 1.817605019
BHU 6y CAD_3M 6 1.814880013
IND 7Y CAD_3M 7 1.821526051
BHU TND CZK_Curve 0.01 0.02
BHU 1WK CZK_Curve 0.03 0.0203
BHU 1M CZK_Curve 0.09 0.021
BHU 2M CZK_Curve 0.18 0.0212
BHU 3M CZK_Curve 0.26 0.0214
BHU 6M CZK_Curve 0.51 0.0212
BHU 9M CZK_Curve 0.76 0.02045
BHU 12M CZK_Curve 1.01 0.01985
BHU 2Y CZK_Curve 2.01 0.020033333
BHU 3Y CZK_Curve 3.02 0.018816667
BHU 4Y CZK_Curve 4.02 0.017666667
BHU 5Y CZK_Curve 5.02 0.016616667
BHU 6Y CZK_Curve 6.02 0.015766667
BHU 7Y CZK_Curve 7.02 0.015216667
BHU 8Y CZK_Curve 8.02 0.014616667
BHU 9Y CZK_Curve 9.02 0.014358333上面是我的数据帧(Df),有5个变量。我想根据‘曲线’填充表格,并将费率重命名为曲线名称。以下是我的预期输出。我尝试使用groupby函数来生成组,并基于'tenor‘并排连接。但我的代码似乎不完整。请建议如何产生以下输出。
df_tenor = df_tenor[['Tenor']].drop_duplicates()
df_tenor = df_tenor.sort_values(by=['tenor'])
gb = df.groupby('curve')
df.rename(columns={'rates': str([df.curve.unique() for g in gb])}, inplace=True)
df_final= pd.concat([g[1].merge(df_tenor, how='outer', on='Tenor') for g in gb], axis=1)
df_final.to_csv('testconcat.csv', index = False)

发布于 2020-04-08 00:41:41
使用pandas.pivot_table()`
pd.pivot_table(df, index='tenor', values='rates', columns='curve')输出
curve CAD_3M CAD_OIS CZK_Curve ZAR_3M
tenor
0.01 NaN NaN 0.020000 NaN
0.03 NaN NaN 0.020300 NaN
0.09 NaN NaN 0.021000 NaN
0.18 NaN NaN 0.021200 NaN
0.25 NaN 1.738620 NaN 6.808000
0.26 NaN NaN 0.021400 NaN
0.50 NaN 1.718042 NaN NaN
0.51 NaN NaN 0.021200 NaN
0.75 NaN 1.697247 NaN NaN
0.76 NaN NaN 0.020450 NaN
1.00 NaN 1.677200 NaN NaN
1.01 NaN NaN 0.019850 NaN
1.50 NaN 1.631257 NaN NaN
2.00 1.906309 NaN NaN 6.483012
2.01 NaN NaN 0.020033 NaN
3.00 1.855570 NaN NaN 6.565003
3.02 NaN NaN 0.018817 NaN
4.00 1.830133 NaN NaN 6.694130
4.02 NaN NaN 0.017667 NaN
5.00 1.817605 NaN NaN 6.839518
5.02 NaN NaN 0.016617 NaN
6.00 1.814880 NaN NaN NaN
6.02 NaN NaN 0.015767 NaN
7.00 1.821526 NaN NaN NaN
7.02 NaN NaN 0.015217 NaN
8.02 NaN NaN 0.014617 NaN
9.02 NaN NaN 0.014358 NaNhttps://stackoverflow.com/questions/61084602
复制相似问题