I have two dataframes imported from files
df1 output(sample):
Country | Currency | Code |
---|---|---|
UNITED STATES | US DOLLAR | USD |
PUERTO RICO | US DOLLAR | USD |
UNITED KINGDOM | UK POUND STERLING | GBP |
GUERNSEY | UK POUND STERLING | GBP |
JAPAN | JAPANESE YEN | JPY |
df2 output(sample):
index | Original Currency |
---|---|
0 | US DOLLAR |
1 | UK POUND STERLING |
2 | JAPANESE YEN |
3 | US DOLLAR |
4 | US DOLLAR |
5 | UK POUND STERLING |
I have converted both columns from df1 to a dictionary using:
di = dict(zip(df1['Currency'], df1['Code']))
Currently, I am trying to map the values from my dictionary to my second dataframe's 'Original Currency' column; however, the attempts I have made either result in NaN values or no change at all.
I have attempted using both .map()
and .replace()
with little success
With .map()
df2['Original Currency'] = df2['Original Currency'].map(di)
With .replace()
df2['Original Currency'] = df2['Original Currency'].replace(di)
&
df3 = df2.replace({"Original Currency": di})
CodePudding user response:
Your code should work. Try this:
df2['Original Currency'] = df2['Original Currency'].map(df1.set_index('Currency')['Code'])
print(df2)
# Output
Original Currency
0 USD
1 GBP
2 JPY
If it doesn't work, maybe you have some trailing whitespaces.
CodePudding user response:
You can use apply
df2['Original Currency'] = df2['Original Currency'].apply(lambda i: di[i])