假设我有一个辅助函数,例如:
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
列表中的每个键添加一列?例如。:
hostname memory ...
1 hostxyz 1024GB ...
2 . .
3 . .
4 . .
最佳答案
经过一些考虑和测试,我开发了以下解决方案:
用
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')