首页 > 解决方案 > 将嵌套的 Json 信息提取到新列中

问题描述

我有一个格式如下的数据框,其中包含来自 Google Places 的信息:

      geometry                                                      place_id
0     {'location': {'lat': 19.41, 'lng': -99.16},'viewport':{...}}  ChIJ72ctQ0D_0YURyVYdfRzImGU
1     {'location': {'lat': 19.42, 'lng': -99.17},'viewport':{...}}  ChIJ11QtkkX_0YUR5EK4tQCqY3A
2     {'location': {'lat': 19.43, 'lng': -99.18},'viewport':{...}}  TEST ChIJBUve6UX_0YURCRM4GwUtwsc
3     {'location': {'lat': 19.44, 'lng': -99.16},'viewport':{...}}  ChIJQYvciNX90YURv1n4r_l0wvo
4     {'location': {'lat': 19.45, 'lng': -99.16},'viewport':{...}}  ChIJkZX8gz__0YURSxUrmMO6JLQ

我想要做的是,对于数据框中的每一行,获取其 lat 和 lng vlaues 并将它们设置为新列,以便数据框看起来像这样:

      lat      lng       geometry                                                      place_id
0     19.41    -99.16    {'location': {'lat': 19.41, 'lng': -99.16},'viewport':{...}}  ChIJ72ctQ0D_0YURyVYdfRzImGU
1     19.42    -99.17    {'location': {'lat': 19.42, 'lng': -99.17},'viewport':{...}}  ChIJ11QtkkX_0YUR5EK4tQCqY3A
2     19.43    -99.18    {'location': {'lat': 19.43, 'lng': -99.18},'viewport':{...}}  TEST ChIJBUve6UX_0YURCRM4GwUtwsc
3     19.44    -99.16    {'location': {'lat': 19.44, 'lng': -99.16},'viewport':{...}}  ChIJQYvciNX90YURv1n4r_l0wvo
4     19.45    -99.16    {'location': {'lat': 19.45, 'lng': -99.16},'viewport':{...}}  ChIJkZX8gz__0YURSxUrmMO6JLQ

不知道该怎么做...我尝试过奇怪的东西,例如 df['latitude'] = df[['geometry']]['location']['lat'],但这不起作用。我确定一定有一个我不熟悉的优雅解决方案......有什么建议吗?

标签: pythonjsonpandas

解决方案


更改从 JSON 文件中提取数据的方式。

df1 = pd.json_normalize(jsonfile, record_path=['location'],  meta=['place_id'])
df2 = pd.json_normalize(jsonfile)

pd.merge(df1, df2 on='place_id')

推荐阅读