获取用Python构建数据帧的帮助

2024-03-29 08:19:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python还不熟悉。我有一份清单,像这样的东西:

places = ['Alabama', 'Auburn', 'Jacksonville', 'Arizona', 'Flagstaff', 'Phoenix']

请注意,奥本和杰克逊维尔是阿拉巴马州的城市,而弗拉格斯塔夫和菲尼克斯是亚利桑那州的城市。你知道吗

我需要创建一个包含两列['State','City']的pandas数据帧,如下所示:

    State |    City
  --------|----------
 Alabama  | Auburn
 Alabama  | Jacksonville
 Arizona  | Flagstaff
 Arizona  | Phoenix

我试图创建一个字典,它的键是'state',对应键的值是'cities'。但它不适合我,因为我的知识是有限的Python现在。你知道吗

非常感谢你的帮助。你知道吗

谢谢


Tags: 数据citypandas字典stateplacescitiesphoenix
1条回答
网友
1楼 · 发布于 2024-03-29 08:19:49

字典中的键必须是唯一的,因此如果在一个州有多个城市的情况下执行某些操作,则会覆盖某些值

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

相关问题 更多 >