【发布时间】:2021-06-13 16:23:50
【问题描述】:
所以,我有一个有趣的问题。我有一些数据有一个有趣的嵌套字典,我需要对其进行操作,但是遇到了麻烦。我可以在纯 python 中完成,但想在 Pandas 中完成整个解决方案,以使代码更简洁,而不必在其他地方重新打开相同的文件。
数据框:
Id Timezone Data
957643 Pacific {"California":{"city":"San Francisco","pop":"874961"}}
973472 Eastern {"New York":{"city":"New York","pop":"8419000"}}
所需的输出,一个字典列表,将 Id 和 Timezone 放入嵌套字典中,同时将它们包装在另一个键中,这样我就可以输出为 JSON:
[{"State Date":{"California":{"City":"San Francisco","Population":"874961","Id":"957643","Timezone":"Pacific"}}}, {"State Date":"New York":{"City":"New York","Population":"8419000", "Id":"973472","Timezone":"Eastern"}}}]
问题是,为了在其他地方提取最终数据格式,我需要将 Timezone 和 Id 放入要导出到 JSON 的每一行的嵌套部分中,并重命名一些字段。我已经尝试过 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')
output.append({'State Data': entry})
任何帮助将不胜感激。
【问题讨论】: