使用字典映射列中的值。

huangapple go评论95阅读模式
英文:

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])

huangapple
  • 本文由 发表于 2023年1月9日 03:44:42
  • 转载请务必保留本文链接:https://go.coder-hub.com/75050769.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定