我有以下两个数据框:
Ticker | Fund | PB1 | PB2 | PB3 | PB4
KMX | Bob | BAML | GS | MACQ | HSBC
TEX | Jon | JPM | UBS |
ARC | Pat | JPM | UBS | CITI | WF
Ticker | Rate | PB
KMX |-2 | GS
TEX |-5 | JPM
TEX |-3 | UBS
ARC |-10 | WF
我最终需要用PB提供的速率替换数据帧1中的PB基于上面的示例 - 数据帧看起来像
Ticker | Fund | PB1 | PB2 | PB3 | PB4
KMX | Bob | | -2 | |
TEX | Jon | -5 | -3 |
ARC | Pat | | | | -10
我曾考虑添加额外的列,其中的比率基于谁在PB列中,但我无法弄清楚每个基金的PB数量的变量性质。
我尝试使用合并,但我无法弄清楚从哪里开始。
loadin=Trade_options_final.merge(Total, how='left', on=[])
好问题,你可能需要melt
然后merge
然后pivot
它回来
yourdf=df.melt(['Ticker','Fund']).\
merge(df1.rename(columns={'PB':'value'}),how='left').\
fillna('').\
pivot_table(index=['Ticker','Fund'],columns='variable',values='Rate',aggfunc='first').\
reset_index()
yourdf
Out[508]:
variable Ticker Fund PB1 PB2 PB3 PB4
0 ARC Pat -10
1 KMX Bob -2
2 TEX Jon -5 -3