我正在尝试将字典映射到数据框。我浏览了一些代码,拼凑了我认为可以工作的内容,但是代码没有运行。任何人都可以帮助将此映射到地图吗?

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作为参数使用pd.Series.map了:

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




更新:现在我们知道Top15是按国家/地区索引的

问题是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])

关于python - 将字典映射到数据框无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40849340/

10-13 02:26