我在Python的Pandas中有一个数据框,类似于以下内容 -
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: Data with input dtype object was converted to float64. warnings.warn(msg, DataConversionWarning)
对于每一行数据,都会打印出一次这个警告。由于我的数据框中有大约450K行数据,当ipython notebook打印所有这些警告消息时,我的电脑就会卡住。
但是为了测试我的函数,我创建了一个虚拟数据框,并尝试在上面应用相同的函数,结果运行良好。以下是该代码 -
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
有人能否建议我做错了什么或者我可以改变什么来消除这个错误?
df_fil.info()
是什么?也许有一些列不是float
类型。 - jezrael