Python 将字典映射到无法正常工作的数据帧

Python 将字典映射到无法正常工作的数据帧,python,pandas,dictionary,mapping,Python,Pandas,Dictionary,Mapping,我正在尝试将字典映射到数据帧。我翻遍了一些代码,拼凑出了我认为可行的代码,但代码没有运行。有人能帮我把这张地图拿出来吗 Top15是一个以国家为索引的现有数据框架 ContinentDict = {'China':'Asia', 'United States':'North America', 'Japan':'Asia', 'United Kingdom':'Europe',

我正在尝试将字典映射到数据帧。我翻遍了一些代码,拼凑出了我认为可行的代码,但代码没有运行。有人能帮我把这张地图拿出来吗

Top15是一个以国家为索引的现有数据框架

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'}




Top15['Continent'] = Top15['Country'].map(ContinentDict)

这应该行得通。下面是一个例子:

In [1]:Top15 = pd.DataFrame({'Country':['France','Brazil', 'Canada', 'Japan']})
      Top15
Out[1]:
  Country
0  France
1  Brazil
2  Canada
3   Japan
现在您确实可以使用dict作为参数:

In [2]: Top15['Continent'] = Top15['Country'].map(ContinentDict)
        Top15
Out[2]:
  Country      Continent
0  France         Europe
1  Brazil  South America
2  Canada  North America
3   Japan           Asia

更新:现在我们知道排名前15位是按国家索引的 问题是
index.map
不允许dict作为参数。但您可以执行以下任一操作:

# 1000 loops, best of 3: 696 µs per loop
Top15['Continent'] = Top15.index.to_series().map(ContinentDict)

# 1000 loops, best of 3: 722 µs per loop
Top15['Continent'] = pd.Series(Top15.index).map(ContinentDict)
或者更快:

# 10000 loops, best of 3: 156 µs per loop
Top15['Continent'] = Top15.index.map(lambda x: ContinentDict[x])

如果没有原始数据,为您的df编码,那么这只是推测,您需要发布数据和编码,以便其他人复制此内容。什么不起作用,您能否显示您的输入和预期输出,例如什么是
Top15
,请阅读。Top15已经是一个以国家为索引的现有数据框。pd.Series.map不应该已经工作了吗?请查看我的更新,其中包括三种可能的配置