我正在从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
?
答案 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},
# ...