2017-07-02 47 views
0

我需要將json返回到數據幀的列頭及其數據類型的前端。我曾嘗試:從數據幀中提取dtypes並映射到頭部

return {"column header" : header, "filename" : newFilename, 
     "data": result.head(n= rowsLimit).values.tolist(), 
     "datatype": result.dtypes.tolist()} 

result.dtypes.tolist(),我正在一個dtype('int64') is not JSON serializable錯誤。

感謝

+0

你期望得到的'datatype'值在JSON中看起來像什麼? –

+0

可能是數組的json數組。 [[「Header1」,「int64」],[「Header2」,「object」]]或者只是一個數據類型列表,前端會將它們與列標題索引正確映射。 –

回答

1

數據類型有name屬性,你可以用它來返回字符串:

{"datatype": [t.name for t in result.dtypes.tolist()]} 
+0

他們都在工作。感謝您介紹name屬性。 –

1

將它們轉換成字符串將是一種選擇:

>>> json.dumps({"datatype": [str(d) for d in result.dtypes.tolist()]}) 
'{"datatype": ["float64", "float64", "float64", "float64"]}' 

或者,你可以使用repr

>>> json.dumps({"datatype": [repr(d) for d in result.dtypes.tolist()]}) 
'{"datatype": ["dtype(\'float64\')", "dtype(\'float64\')", "dtype(\'float64\')", "dtype(\'float64\')"]}' 
+0

它們工作正常。感謝您的幫助! –