如果列B为真,则从列A中提取值

Kha*_*775 0 python pandas

给定货币数据框:

Pair   | Amount
EUR/USD| 100,000
USD/EUR| 200,000
USD/JPY|  50,000
Run Code Online (Sandbox Code Playgroud)

Pair例如,如果是,"USD/EUR"我将如何提取Amount到新列中,以便:

Pair   | Amount |Dollars
EUR/USD| 100,000|0
USD/EUR| 200,000|200,000
CHF/JPY|  50,000|0
Run Code Online (Sandbox Code Playgroud)

我敢肯定在Pandas有一个很好的方法可以做到这一点,但到目前为止我还是一个新手.

WeN*_*Ben 7

import numpy as np 
df.assign(Dollars=np.where(df['Pair']=='USD/EUR',df['Amount'],0))
Out[383]: 
   Pair       Amount   Dollars
0  EUR/USD   100,000         0
1  USD/EUR   200,000   200,000
2  USD/JPY    50,000         0
Run Code Online (Sandbox Code Playgroud)

编辑:

df.assign(Dollars=np.where(df['Pair'].isin(['USD/EUR','EUR/USD']),df['Amount'],0))

Out[830]: 
   Pair       Amount   Dollars
0  EUR/USD   100,000   100,000
1  USD/EUR   200,000   200,000
2  USD/JPY    50,000         0
Run Code Online (Sandbox Code Playgroud)

定义您想要的比率 df['Rate']=[1,2,3]

df.assign(Dollars=np.where(df['Pair'].isin(['USD/EUR','EUR/USD']),df['Amount']*df['Rate'],0))
Out[870]: 
   Pair      Amount  Rate  Dollars
0  EUR/USD   100000     1   100000
1  USD/EUR   200000     2   400000
2  USD/JPY    50000     3        0
Run Code Online (Sandbox Code Playgroud)