【问题标题】:Get help in constructing a pandas dataframe in Python在 Python 中构建 pandas 数据框时获得帮助
【发布时间】:2016-11-28 19:46:52
【问题描述】:

我是 Python 新手。我有一个物品清单,像这样:

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

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

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

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

我试图创建一个字典,其中“状态”作为键,“城市”作为相应键的值。但这对我不起作用,因为我现在对 Pythoin 的了解有限。

非常感谢您的帮助。

谢谢

【问题讨论】:

  • 您好先生,我最初的想法是定义一个空字典。然后将密钥添加为状态。但是,我不太确定如何添加键,因为我正在遍历列表。这就是我的想法。我正在尝试自动化它。
  • 您好,先生,我制作了两个不同的系列,一个针对州,另一个针对城市。但我不能合并它们或连接它们,因为它们的长度不同。任何想法都会非常有帮助。谢谢
  • @jayant,您所在的州是否总是跟随相同数量的城市?例如,总是 1 个州然后 2 个城市吗?
  • 你怎么知道Jacksonville项目不属于Florida。很多这样的案例可能会出现在链条的下游,例如 SpringfieldWashingtonGreenville 等。也许可以告诉我们列表是如何派生的?跨度>
  • 各位同事您好,我想我们可以在链接中找到数据;

标签: python pandas dataframe


【解决方案1】:

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

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

【讨论】:

  • 您好先生,非常感谢您花时间回答我的疑问。但实际上,我没有一个很好的元组列表。我所拥有的是一个庞大的州及其城市混合在一起的列表。例如:state1 后跟它的所有城市,然后 state2 后跟它的城市,依此类推。所以,我想知道,如果要使用上面的想法,有可能吗?非常感谢您的回复。
  • 你好 fuglede,实际上经过一番深思熟虑后我能够弄清楚,我使用“for”循环将其转换为字典,然后我使用了你的第二个想法。事实证明这很有帮助。我对你感激不尽。
  • 不客气。 :) 如果您发现它有用,您可能希望接受答案。
猜你喜欢
  • 2023-03-08
  • 2011-09-03
  • 2018-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多