如何高效地展平 elasticsearch_dsl 查询中返回的 JSON 结构?

How to efficently flatten JSON structure returned in elasticsearch_dsl queries?

我正在使用 elasticsearch_dsl 查询和搜索 elasticsearch 数据库。

我要查询的字段之一是地址,其结构如下:

address.first_line
address.second_line
address.city
adress.code

returned 文档将其保存在 JSON 结构中,这样地址就保存在字典中,地址的每个子字段都有一个字段。

我想将其放入一个 (pandas) 数据框中,这样地址的每个子字段就有一列。

直接将地址放入数据框中会得到一列地址字典,并迭代行以手动解压缩(json.normalize())每个地址字典需要很长时间(4 天,约 200,000 行)。

从文档中我无法弄清楚如何获得 elasticsearch_dsl 到 return 的扁平化结果。有更快的方法吗?

正在寻找解决这个问题的方法,我遇到了自己的答案,发现它缺乏,所以会用更好的方法更新

具体来说:pd.json_normalize(df['json_column'])

在上下文中:pd.concat([df, pd.json_normalize(df['json_column'])], axis=1)

然后根据需要删除原始列。

去年的原始答案,做同样的事情要慢得多

df.column_of_dicts.apply(pd.Series) returns 一个 DataFrame,其中的指令被展平了。

pd.concat(df,new_df) 将新列添加到旧数据框。

然后删除原来的column_of_dicts。

pd.concat([df, df.address.apply(pd.Series)], axis=1)是我实际使用的代码。