英文:
Map values in column with a dictionary
问题
我已经从文件导入了两个数据框架。
df1 输出(示例):
Country | Currency | Code |
---|---|---|
美国 | 美元 | USD |
波多黎各 | 美元 | USD |
英国 | 英镑 | GBP |
根西岛 | 英镑 | GBP |
日本 | 日元 | JPY |
df2 输出(示例):
index | 原始货币 |
---|---|
0 | 美元 |
1 | 英镑 |
2 | 日元 |
3 | 美元 |
4 | 美元 |
5 | 英镑 |
我已经使用以下方式将df1的两列转换为字典:
di = dict(zip(df1['Currency'], df1['Code']))
目前,我正在尝试将字典的值映射到第二个数据框架的'原始货币'列,但我所尝试的方法要么导致NaN值,要么根本没有变化。
我已尝试使用.map()
和.replace()
,但成功的机会不大。
使用.map()
:
df2['原始货币'] = df2['原始货币'].map(di)
使用.replace()
:
df2['原始货币'] = df2['原始货币'].replace(di)
以及:
df3 = df2.replace({"原始货币": di})
英文:
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})
答案1
得分: 1
你的代码应该可以正常工作。尝试这样做:
df2['Original Currency'] = df2['Original Currency'].map(df1.set_index('Currency')['Code'])
print(df2)
# 输出
Original Currency
0 USD
1 GBP
2 JPY
如果不起作用,可能是因为存在一些末尾的空格。
英文:
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.
答案2
得分: 0
df2['Original Currency'] = df2['Original Currency'].apply(lambda i: di[i])
英文:
You can use apply
df2['Original Currency'] = df2['Original Currency'].apply(lambda i: di[i])
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论