Несмотря на то, что говорит доктор:
опущенными: ДИКТ, по умолчанию не является ни один
ДИКТ из item-> DTYPE о том, что подавленным, если это возможно, или строка «Infer ', который попытается свести к соответствующему равному типу (например, с поплавком64 в int64, если возможно)
, если поставить Dict, как downcast
вы получите AssertionError("dtypes as dict is not supported yet")
можно использовать только downcast='infer'
, которые вызывают панд попытаться обратное приведение, например, плавает в целых числах. Но это кажется ошибкой: если все поплавки в столбце превышают 10000, он теряет точность и преобразует их в целые числа.
In [1]: import pandas as pd
...: import numpy as np
...: df = pd.DataFrame([[3.14,9999.9,10000.1,200000.2],[2.72,9999.9,10000.1,300000.3]], columns=list("ABCD"))
...: df.dtypes
...:
Out[1]:
A float64
B float64
C float64
D float64
dtype: object
In [2]: df
Out[2]:
A B C D
0 3.14 9999.9 10000.1 200000.2
1 2.72 9999.9 10000.1 300000.3
In [3]: dff=df.fillna(0, downcast='infer')
...: dff.dtypes
...:
Out[3]:
A float64
B float64
C int64
D int64
dtype: object
In [4]: dff
Out[4]:
A B C D
0 3.14 9999.9 10000 200000
1 2.72 9999.9 10000 300000
Здесь имеется обширная документация: http://pandas.pydata.org/pandas-docs/stable/missing_data.html; downcast по сути является внутренним параметром, вам это не нужно. Используйте '' NaN'', никогда '' None'' (который будет преобразован так или иначе, за исключением столбцов '' object''. – Jeff
@Jeff, иногда я получаю None в результате SQL-запроса в столбце строки, который отображается как объект dtype. В этом случае я не знаю, как конвертировать в NaN. Спасибо, я проверю документы! – user3659451
Для преобразования в использование NaN: df.fillna (значение = np.NaN) – Spas