【发布时间】: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