我有以下两个数据框:
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
关于python - 基于每行动态列的Python变量查找,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54792410/