2014-11-21 315 views
4

我已經搜索了一些東西來幫助我理解關鍵字參數downcast在類方法DataFrame.fillna中。請提供一個例子,以幫助促進我與大家的學習:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html使用fillna,downcast和熊貓

此外,如果你能說一下類型設置在逐列基礎上一兩句話用在列NaN甚至NoneType值,以及如何處理這些共同東東。這兩者之間的區別是什麼。

非常感謝!

+0

這裏有大量的文檔:http://pandas.pydata.org/pandas-docs/stable/missing_data.html; downcast基本上是一個內部參數,你不需要它。使用''NaN'',永遠不要''None''(除了''object'' dtyped列以外,它將被轉換)。 – Jeff 2014-11-21 21:50:14

+0

@Jeff,有時我在字符串列中顯示爲dtype對象的SQL查詢中得到None。在那種情況下,我不知道如何轉換爲NaN。謝謝,我會檢查文檔! – user3659451 2014-11-21 22:41:06

+1

要轉換爲NaN用途:df.fillna(value = np.NaN) – Spas 2015-03-20 17:51:33

回答

2

儘管什麼醫生說:

低垂字典,默認爲無

本期特價貨品的字典>什麼 垂頭喪氣如果可能的D型,或者字符串「推斷'將嘗試將 降頻到適當的相同類型(例如,如果可能的話,從float64到int64)

如果你提供字典作爲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