我注意到这种行为,不确定它是否是一个错误。 我创建了一个包含2个整数列和1个浮点列的数据框。
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,dtype信息将丢失:
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}]'