获取有关在Python中构建pandas数据帧的帮助

时间:2016-11-28 19:46:53

标签: python pandas dataframe

我是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的知识有限。

非常感谢帮助。

由于

1 个答案:

答案 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