2014-06-27 74 views
2

我注意到了這種行爲,不知道它是一個錯誤。 創建一個數據幀具有2個整數列和1個浮柱熊貓to_json更改數據類型

import pandas as pd 
df = pd.DataFrame([[1,2,0.2],[3,2,0.1]]) 
df.info() 


<class 'pandas.core.frame.DataFrame'> 
Int64Index: 2 entries, 0 to 1 
Data columns (total 3 columns): 
0 2 non-null int64 
1 2 non-null int64 
2 2 non-null float64 
dtypes: float64(1), int64(2) 

如果我輸出到JSON,所述D型信息丟失:

df.to_json(orient= 'records') 

'[{"0":1.0,"1":2.0,"2":0.2},{"0":3.0,"1":2.0,"2":0.1}]' 

所有數據被轉換爲浮動。例如,如果一列包含ns時間戳,這是個問題,因爲它們被轉換爲指數表示法,並且亞秒信息丟失。

我也在這裏提出的問題:https://github.com/pydata/pandas/issues/7583

我所期待的結果是:

'[{"0":1,"1":2,"2":0.2},{"0":3,"1":2,"2":0.1}]' 
+0

這個問題似乎是脫離主題,因爲它是一個錯誤報告(所以應該,並且在github上提交)。 –

+0

我想問題是,我如何輸出具有我期待的格式的json? – Fra

回答

1

一種方法是查看與對象D型數據框列:

In [11]: df1 = df.astype(object) 

In [12]: df1.to_json() 
Out[12]: '{"0":{"0":1,"1":3},"1":{"0":2,"1":2},"2":{"0":0.2,"1":0.1}}' 

In [13]: df1.to_json(orient='records') 
Out[13]: '[{"0":1,"1":2,"2":0.2},{"0":3,"1":2,"2":0.1}]' 
+0

是的,這很有效,雖然它似乎使速度慢了6倍。 – Fra