将键映射到熊猫 Python 中的值

Posted

技术标签:

【中文标题】将键映射到熊猫 Python 中的值【英文标题】:Map keys to values in pandas Python 【发布时间】:2021-03-01 03:09:06 【问题描述】:

我有这本从 Wikipedia 上刮下来的字典。该词典包含各大洲及其各自的国家。例如:

theWorld = 'Asia': ['China', 'Malaysia'.. etc], 'Europe': ['Germany', 'Italy' ..etc]

我正在尝试使用 pandas 制作一个数据框,以将一个国家/地区映射到其大陆。例如:

Country   Continent
China     Asia
Malaysia  Asia 
Germany   Europe
Ghana     Africa

等等等等。

【问题讨论】:

【参考方案1】:

您可以使用 list comprehension 创建 DataFrame 的行:

import pandas as pd

theWorld = 'Asia': ['China', 'Malaysia'], 'Europe': ['Germany', 'Italy']

df = pd.DataFrame(data=[[v, k] for k, vs in theWorld.items() for v in vs], columns=['country', 'continent'])
print(df)

输出

    country continent
0     China      Asia
1  Malaysia      Asia
2   Germany    Europe
3     Italy    Europe

其他资源:

DataFrame数据结构,here 何时使用列表解析,here

【讨论】:

谢谢,这解决了我的问题。您能否告诉我应该为您提供的解决方案寻找什么样的参考资料。 我还不懂列表理解,但我转换为正常循环,我有点明白你做了什么,所以再次感谢你。 data= [] for k, vs in theWorld.items(): for v in vs: data.append([v,k]) print(data) @Ozeus 我将一些资源链接到列表理解,希望对您有所帮助 真的很有帮助。谢谢。【参考方案2】:

您可以分两步完成,首先在字典理解中反转字典,然后使用该国家/地区映射创建数据框:

>>> import pandas as pd
>>> the_world = 
...         'Asia': ['China', 'Malaysia'],
...         'Europe': ['Germany'],
...         'Africa': ['Ghana']
...     
>>> country_to_continent = 
...         country: continent
...         for continent, countries in the_world.items() 
...         for country in countries
...     
>>> country_to_continent
'China': 'Asia', 'Malaysia': 'Asia', 'Germany': 'Europe', 'Ghana': 'Africa'
>>> df = pd.DataFrame(
...         data=
...             'Country': country_to_continent.keys(),
...             'Continent': country_to_continent.values()
...         )
>>> df
    Country Continent
0     China      Asia
1  Malaysia      Asia
2   Germany    Europe
3     Ghana    Africa

【讨论】:

以上是关于将键映射到熊猫 Python 中的值的主要内容,如果未能解决你的问题,请参考以下文章

如何映射到熊猫列表列中的值

在 VBA 中的字典值中查找最大值/最小值

如何将键映射到 MySQL 选择查询中单个字段的值

熊猫,根据行中的值创建列

将键值对(来自数组的值)添加到数组中的特定对象

如何比较字典值中的多个数组,并将每个数组元素的字典键映射到新数组/列表中