【发布时间】:2017-01-05 22:50:44
【问题描述】:
我在 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
现在我想对这个dataframe的每一行应用一个函数函数写成这样——
def findCluster(clusterModel,data):
return clusterModel.predict(data)
我以这种方式将此函数应用于每一行 -
df_fil.apply(lambda x : findCluster(cluster_all,x.reshape(1,-1)),axis=1)
当我运行这段代码时,我得到一个警告说 -
DataConversionWarning:输入 dtype 对象的数据已转换为 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
谁能建议我做错了什么或者我可以改变什么来消除这个错误?
【问题讨论】:
-
df_fil.info()是什么?也许某些列不是float。 -
@jezrael 你能把它添加为答案吗?这行得通! :)
-
当然,我添加它来回答。
标签: python function pandas dataframe apply