我使用熊猫函数.to_json将数据从dataframe写入json文件,如下所示:
xx.to_json('file_path',orient='records',lines=True)它的输出如下:
{"speed":null,"state":4.0,"stop_trigger":null,"t":1527237121263,"target_speed":null}
{"speed":null,"state":null,"stop_trigger":null,"t":1527237121264,"target_speed":400.0}如果有空值,如何处理输出中的列?:
{"state":4.0,"t":1527237121263}
{"t":1527237121264,"target_speed":400.0}发布于 2018-05-25 15:07:07
最好的方法是检查dict中的每个元素,并删除具有空值的键。看起来会是这样的。
with open('data.json') as f:
json_dict = json.load(f)
for key in json_dict:
if json_dict[key] is Null:
json_dict.pop(key)使用json_dict[key],可以获得键的值,使用pop()函数可以从字典中删除元素。pop()函数还返回要删除的键的值。
发布于 2018-05-25 14:10:41
您可以迭代数据,以删除空列并创建字典列表。
然后使用json模块将列表写入文件。
import pandas as pd
import json
df = pd.DataFrame([[np.nan, 4.0, np.nan, 1527237121263, np.nan],
[np.nan, np.nan, np.nan, 1527237121264, 400.0]],
columns=['speed', 'state', 'stop_trigger', 't', 'target_speed'])
d = [dict(row.dropna()) for idx, row in df.iterrows()]
with open('file.json', 'w') as fp:
json.dump(d, fp) 发布于 2018-05-25 14:52:12
singledispatch是您的朋友,您可以用一个函数来处理不同数据类型中的null/None情况(您可以在dataframe、dict、file或json字符串上这样做)。
import os
import json
from functools import singledispatch
@singledispatch
def remove_null_bool(ob):
return ob
@remove_null_bool.register(list)
def _process_list(ob):
return [remove_null_bool(v) for v in ob if v is not None]
@remove_null_bool.register(dict)
def _process_list(ob):
return {k: remove_null_bool(v) for k, v in ob.items() if v is not None}
def cleanse(in_file):
with open(in_file, 'r') as source:
source_json = json.load(source)
with open(in_file, 'w') as source:
json.dump(remove_null_bool(source_json), source)https://stackoverflow.com/questions/50530759
复制相似问题