2014-11-21 4 views
4

Я искал что-то, что помогло мне понять аргумент ключевого слова downcast в методе класса DataFrame.fillna. Пожалуйста, приведите пример, чтобы помочь облегчить мое и обучение каждого: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.htmlИспользование fillna, downcast и pandas

Кроме того, если вы можете сказать два слова о настройке типа на по столбцам основе с NaN или даже NoneType значений в столбце и как обрабатывать такие общие вещи. И какая разница между этими двумя.

Большое спасибо!

+0

Здесь имеется обширная документация: http://pandas.pydata.org/pandas-docs/stable/missing_data.html; downcast по сути является внутренним параметром, вам это не нужно. Используйте '' NaN'', никогда '' None'' (который будет преобразован так или иначе, за исключением столбцов '' object''. – Jeff

+0

@Jeff, иногда я получаю None в результате SQL-запроса в столбце строки, который отображается как объект dtype. В этом случае я не знаю, как конвертировать в NaN. Спасибо, я проверю документы! – user3659451

+1

Для преобразования в использование NaN: df.fillna (значение = np.NaN) – Spas

ответ

2

Несмотря на то, что говорит доктор:

опущенными: ДИКТ, по умолчанию не является ни один

ДИКТ из 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 
Смежные вопросы