给出货币数据框:
Pair | Amount
EUR/USD| 100,000
USD/EUR| 200,000
USD/JPY| 50,000
如果Pair
是"USD/EUR"
,我将如何将Amount
提取到新列中,以便:{/ p>
Pair | Amount |Dollars
EUR/USD| 100,000|0
USD/EUR| 200,000|200,000
CHF/JPY| 50,000|0
我确定在Pandas有一个很好的方法可以做到这一点,但到目前为止我还是一个新手。
答案 0 :(得分: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
编辑:
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
定义您想要的费率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
答案 1 :(得分:4)
可能不是最优雅的,但这会添加Dollars
列
df['Dollars'] = df['Amount'].where(df['Pair']=='USD/EUR').fillna(0)
答案 2 :(得分:2)