我有以下两个数据框:

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/

10-14 08:10