gpt4 book ai didi

python - 使用 dict 和 map 在 Dataframe 中创建新列只给出 NaN

转载 作者:行者123 更新时间:2023-11-28 20:02:20 24 4
gpt4 key购买 nike

我有一个 Pandas 数据框,

       Rank % Renewable
Country
China 1 19.754910
Japan 3 10.232820
Canada 6 61.945430
Germany 7 17.901530
India 8 14.969080
France 9 17.020280
Italy 11 33.667230
Spain 12 37.968590
Iran 13 5.707721
Brazil 15 69.648030

我使用字典将值映射到名为 continent 的新列中,使用我在类似答案中找到的以下代码,

df['continent'] = pd.Series(df.index.values).map(ContinentDict)

作为ContinentDict

ContinentDict  = {'China':'Asia', 
'United States':'North America',
'Japan':'Asia',
'United Kingdom':'Europe',
'Russian Federation':'Europe',
'Canada':'North America',
'Germany':'Europe',
'India':'Asia',
'France':'Europe',
'South Korea':'Asia',
'Italy':'Europe',
'Spain':'Europe',
'Iran':'Asia',
'Australia':'Australia',
'Brazil':'South America'}

continent 列中的所有新项目都是 NaN,有人可以帮我吗?

最佳答案

你想要

In[90]:
df['continent'] = df.index.to_series().map(ContinentDict)
df

Out[90]:
Rank % Renewable continent
Country
China 1 19.754910 Asia
Japan 3 10.232820 Asia
Canada 6 61.945430 North America
Germany 7 17.901530 Europe
India 8 14.969080 Asia
France 9 17.020280 Europe
Italy 11 33.667230 Europe
Spain 12 37.968590 Europe
Iran 13 5.707721 Asia
Brazil 15 69.648030 South America

你尝试了什么:

In[91]:
pd.Series(df.index.values).map(ContinentDict)

Out[91]:
0 Asia
1 Asia
2 North America
3 Europe
4 Asia
5 Europe
6 Europe
7 Europe
8 Asia
9 South America
dtype: object

生成 NaN 因为你正在从 numpy 值构造一个 Series 所以返回的索引是自动生成的 RangeIndex 所以当它尝试与您的 df 对齐,但失败,因此所有行都变为 NaN

关于python - 使用 dict 和 map 在 Dataframe 中创建新列只给出 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46609026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com