通过Pandas和Numpy.ndarray类型将Excel矩阵转换为JSON

时间:2017-03-08 16:18:12

标签: python excel numpy

我正在从excel文件中读取矩阵。矩阵看起来像这样:

            10100300    10100400    10100500    10100600
10100200    243         0           42          54
10100300    243         23          42          5443
10100400    243         110         42          543
10100500    243         0           432         543232342
10100600    243         440         42          544
10100700    243         0           42          54

最终,我希望将其转换为dicts列表,最后转换为JSON文件。

这看起来像是:

[{"Origin" : 10100200,
"Destination" : 10100300,
"flow" : 243},
{"Origin" : 10100400,
"Destination" : 10100300,
"flow" : 23}]

首先,我使用pandas阅读: flows_data_df = pd.read_excel("file.xlsx")

转换为numpy数组: flow_data = flows_data_df.as_matrix()

矩阵很大并且有很多零,所以我删除了它们

clean_flow_data = flow_data[np.all(flow_data == 0, axis=1)]

此时,我被困住了。如何从numpy.ndarray类型转到JSON

1 个答案:

答案 0 :(得分:1)

您可以坚持pandas具有to_dict方法,假设df是您从excel读入的原始数据框,原点是数据框的索引和目的地是数据框的列:

(df.stack()[lambda x: x != 0].rename('flow').rename_axis(("Origin", "Destination"))
   .reset_index().to_dict("records"))

#[{'Destination': '10100300', 'Origin': 10100200, 'flow': 243},
# {'Destination': '10100500', 'Origin': 10100200, 'flow': 42},
# {'Destination': '10100600', 'Origin': 10100200, 'flow': 54},
# {'Destination': '10100300', 'Origin': 10100300, 'flow': 243},
# ...