我是Python的新手。我有一个项目列表,例如这样:
places = ['Alabama', 'Auburn', 'Jacksonville', 'Arizona', 'Flagstaff', 'Phoenix']
请注意,奥本和杰克逊维尔是阿拉巴马州的城市,而弗拉格斯塔夫和凤凰城是亚利桑那州的城市。
我需要创建一个带有两列['State','City']
的熊猫数据框,如下:
State | City
--------|----------
Alabama | Auburn
Alabama | Jacksonville
Arizona | Flagstaff
Arizona | Phoenix
我试图创建一个字典,该字典将"状态"作为密钥和"城市"作为相应键的值。但这对我不起作用,因为我的知识现在受到pythoin的限制。
非常感谢。
谢谢
词典中的键必须是唯一的,因此,如果您做了一个状态有多个城市的某些事情,您将覆盖某些值;
In [1]: {'Arizona': 'Flagstaff', 'Arizona': 'Phoenix'}
Out[1]: {'Arizona': 'Phoenix'}
另一方面,如果您知道钥匙是唯一的,则pandas.DataFrame.from_dict
可以完成工作。
在您的情况下,您可以将信息作为对列表传递。
In [20]: df = pd.DataFrame([['Arizona', 'Flagstaff'], ['Arizona', 'Phoenix'], ['Alabama', 'Auburn']], columns=['State', 'City'])
In [22]: df
Out[22]:
State City
0 Arizona Flagstaff
1 Arizona Phoenix
2 Alabama Auburn
如果您想摆脱您所传递的冗余信息,包括不止一次,您可以做
之类的事情In [33]: cities = {'Alabama': ['Auburn', 'Jacksonville'], 'Arizona': ['Flagstaff', 'Phoenix']}
In [34]: pd.DataFrame(((k, c) for (k, v) in cities.items() for c in v), columns=['State', 'City'])
Out[34]:
State City
0 Arizona Flagstaff
1 Arizona Phoenix
2 Alabama Auburn
3 Alabama Jacksonville