2016-08-29 48 views
1

我有Python中的熊貓數據幀它類似於這樣的事情 -數據轉換出錯的大熊貓Python的應用功能,每行

contest_login_count contest_participation_count ipn_ratio 
0     1       1 0.000000 
1     3       3 0.083333 
2     3       3 0.000000 
3     3       3 0.066667 
4     5       13 0.102804 
5     2       3 0.407407 
6     1       3 0.000000 
7     1       2 0.000000 
8     53       91 0.264151 
9     1       2 0.000000 

現在我想給一個函數適用於這每行據幀的功能被寫成這樣 -

def findCluster(clusterModel,data): 
    return clusterModel.predict(data) 

我這個函數應用於每一行以這種方式 -

df_fil.apply(lambda x : findCluster(cluster_all,x.reshape(1,-1)),axis=1) 

當我運行這段代碼,我得到一個警告說 -

DataConversionWarning:數據與輸入D類對象轉變爲float64。

warnings.warn(MSG,DataConversionWarning)

此警告對於每一行打印一次。因爲我的數據框中有大約450K行,所以我的計算機在ipython筆記本上打印所有這些警告消息時掛起。

但爲了測試我的功能,我創建了一個虛擬數據框,並嘗試在該應用上使用相同的功能,並且效果很好。下面是該代碼 -

t = pd.DataFrame([[10.35,100.93,0.15],[10.35,100.93,0.15]]) 
t.apply(lambda x:findCluster(cluster_all,x.reshape(1,-1)),axis=1) 

輸出到這是 -

0 1 2 
0 4 4 4 
1 4 4 4 

任何人都可以建議我做錯了還是什麼我可以改變,使這個錯誤會消失嗎?

+3

什麼是'df_fil.info()'?也許有些列不是'浮動'。 – jezrael

+0

@jezrael你可以添加它作爲答案。這工作! :) – dragster

+0

當然,我添加它來回答。 – jezrael

回答

2

我覺得有問題dtype的一些列不是float

您需要通過astype投它:

df['colname'] = df['colname'].astype(float)