将pandas DataFrame转换为JSON字符串列表

时间:2018-02-02 13:19:53

标签: python json pandas elasticsearch

在这种情况下,我需要知道如何实现to_json_string_list()函数:

df = pandas.read_json('[{"rec1" : "val1", "rec2" : "val4"}, {"rec1" : "val3", "rec2" : "val4"}]', orient='records')
json_strings = list()
json_strings = to_json_string_list(df)
for json_string in json_strings:
    print(json_string)

得到如下输出:

  

{“rec1”:“val1”,“rec2”:“val4”}
  {“rec1”:“val3”,“rec2”:“val4”}

我知道有to_json(orient='records')函数,但这不是我需要的,因为我得到了:

  

[{“rec1”:“val1”,“rec2”:“val4”},
  {“rec1”:“val3”,“rec2”:“val4”}]

打印不仅仅是我对这个字符串的处理方式,因此[],的简单替换也不是我所需要的。

3 个答案:

答案 0 :(得分:3)

我认为您需要to_json参数lines=True

print (df.to_json(orient='records', lines=True))
{"rec1":"val1","rec2":"val4"}
{"rec1":"val3","rec2":"val4"}

df.to_json('file.json',orient='records', lines=True)

答案 1 :(得分:0)

还有另一种方法可以为您提供 pd.Daa 的反向

import json
json_lst = []
for i in (range(len(df)): 
    d = json.loads(df.iloc[i, :].to_json())
    json_lst.append(d)

答案 2 :(得分:0)

使用理解列表的另一种选择:

[dict(v) for _, v in df.iterrows()]