假设我有一个辅助函数,如:
result_helper = helpers.scan(es, scroll='2m', query={"query": {"match_all": {}}} ,index="test", size=1000, _source=('logtime','host_name', 'kv', 'value') )
如何将这些数据导入python数据帧?
采用这种方法:
result_helper = list(helpers.scan(es, scroll='2m', query={"query": {"match_all": {}}} ,index="test", size=1000, _source=('logtime','host_name', 'kv', 'value') ))
df = pd.DataFrame(result_helper)
我获得了一个数据框,但在_source
列中有一个列表:
_id _index _score _source _type sort
0 AVz3qBfbLK0jC-lSNFjT test None {u'host_name': u'hostxyz', u'kv': u'Memory_an... logs [0]
如何从helpers.scan结果创建一个数据框,并为_source
列表中的每个键添加一列?
E.g:
hostname memory ...
1 hostxyz 1024GB ...
2 . .
3 . .
4 . .
答案 0 :(得分:0)
经过一些考虑和测试后,我开发了以下解决方案:
使用
result_helper_list = list(helpers.scan(es, scroll='2m', query={"query": {"match_all": {}}} ,index="check_mk_wnp_csh", size=1000, _source=('logtime','host_name', 'kv', 'value') ))
和
df_result = json_normalize(result_helper_list)
我将列表作为列(根据需要):
df_result.columns
> Index([u'_id', u'_index', u'_score', u'_source.host_name', u'_source.kv',
u'_source.logtime', u'_source.value', u'_type', u'sort'],
dtype='object')