【发布时间】:2020-04-24 02:59:30
【问题描述】:
我正在使用 elasticsearch_dsl 对 elasticsearch 数据库进行查询和搜索。
我要查询的字段之一是地址,其结构如下:
address.first_line
address.second_line
address.city
adress.code
返回的文档将其保存在 JSON 结构中,因此地址保存在一个字典中,其中每个地址子字段都有一个字段。
我想把它放到一个(熊猫)数据框中,这样地址的每个子字段就有一列。
直接将地址放入数据框中会给我一列地址字典,并迭代行以手动解包 (json.normalize()) 每个地址字典需要很长时间(4 天,约 200,000 行)。
从文档中我无法弄清楚如何让 elasticsearch_dsl 返回扁平化结果。有没有更快的方法来做到这一点?
【问题讨论】:
-
您是否尝试过将
Series(列)转换为列表并直接传递给DataFrame构造函数..?即类似pd.DataFrame(df['address].tolist())... -
你能举一个来自 elasticsearch 的 JSON 的简短例子吗?
-
嗨@chrisa,我发现它没有生成可以连接到原始数据框的数据框,但我找到了一个类似的解决方案,如下所示。
标签: pandas dataframe flatten elasticsearch-dsl elasticsearch-dsl-py