首页 > 解决方案 > 摆脱 json 输出中具有空值的列

问题描述

我正在使用 pandas 函数 .to_json 将数据从数据帧写入 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}

标签: pythonjsonpandas

解决方案


您可以迭代数据框以删除空列并创建字典列表。

然后使用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) 

推荐阅读