我是Python新手。我有一个项目清单,如下:
places = ['Alabama', 'Auburn', 'Jacksonville', 'Arizona', 'Flagstaff', 'Phoenix']
请注意,Auburn和Jacksonville是阿拉巴马州的城市,而Flagstaff和Phoenix则是亚利桑那州的城市。
我需要创建一个包含两列['State','City']
的pandas数据框,如下所示:
State | City
--------|----------
Alabama | Auburn
Alabama | Jacksonville
Arizona | Flagstaff
Arizona | Phoenix
我试图创建一个字典,其中“状态”为键,“城市”为相应键的值。但它对我不起作用,因为我现在对Pythoin的知识有限。
非常感谢帮助。
由于
答案 0 :(得分:0)
字典中的键必须是唯一的,所以如果你做了一个州有多个城市的事情,你会覆盖一些值;
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