【问题标题】:Fun Dictionary Manipulation in Pandas [duplicate]Pandas中有趣的字典操作[重复]
【发布时间】:2021-08-29 19:43:16
【问题描述】:

这对于我需要的东西来说是完美的,似乎没有人回答它:

所以,我有一个有趣的问题。我有一些数据有一个有趣的嵌套字典,我需要对其进行操作,但是遇到了麻烦。我可以在纯 python 中完成,但想在 Pandas 中完成整个解决方案,以保持代码更简洁,而不必在其他地方重新打开相同的文件。

我有以下数据框:

Id             Timezone             Data
957643         Pacific             {"California":{"city":"San Francisco","pop":"874961"}, {"Oregon":{"city":"Portland","pop":"645291"}}
973472         Eastern             {"New York":{"city":"New York","pop":"8419000"},{"Maine":{"city":"Portland","pop":"66595"}}

所需的输出,一个字典列表,将 Id 和 Timezone 放入每个展开的字典中,同时将每个字典包装在另一个 State Data 键中,这样我就可以输出为 JSON:

[{"State Data":{"State":"California","City":"San Francisco","Population":"874961","Id":"957643","Timezone":"Pacific"}}, {"State Data":{"State":"New York","City":"New York","Population":"8419000","Id":"973472","Timezone":"Eastern"}},{"State Data":{"State":"Oregon","City":"Portland","Population":"645291","Id":"957643","Timezone":"Pacific"}}, {"State Data":{"State":"Maine","City":"Portland","Population":"66595","Id":"973472","Timezone":"Eastern"}}]

问题是我需要将最终数据格式提取到其他地方,将所有状态放入自己的字典并更新,以便状态附加一个状态键。我已经尝试过 iterrows 方法并应用轴为 1,但它最终将所有 Id 和时区放入每个字典中并相应地更新。

在读取整个 CSV 时,以下变体在纯 python 中有效,但在 Pandas 中无效(原因可能对大多数人来说很明显)。

output = []
entry = {}

for id_, time, data in the_states.iterrows():
        for state, other in data.items():
            entry['Id'] = id_
            entry['City'] = data.get('city')
            entry['Timezone'] = time
            entry['Population'] = data.get('pop')
            entry['State'] = state
            output.append({'State Data': entry})

任何帮助将不胜感激。

【问题讨论】:

  • 你可能会更清楚这个问题和Adding to a nested Dictionary in a Column in Pandas之间的区别
  • 这还没有回答,非常适合我的需要
  • 我几乎关闭了这个问题,因为它们乍一看有多么相似。我是说 highlight 它们应该如何聚合的区别。所以其他人不会投票关闭......
  • 另一个似乎不存在了。
  • 如果 SO 没有 revision history,那将是真的。

标签: python pandas dictionary


【解决方案1】:

您是否尝试过 pd.to_dict() 选项?您可以通过不同的方式来呈现您的数据。 orient=records 或 orient=index 可能会对您有所帮助。文档在这里https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_dict.html

【讨论】:

  • 我没有!谢谢,我会试一试,看看我是否不能让我的数据看起来像我想要的那样。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-11
  • 1970-01-01
  • 1970-01-01
  • 2018-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-17
相关资源
最近更新 更多