Can';t在python数据帧/数组中将浮点转换为int
我对Kaggle和Python都是新手,不知道如何转换这个数据集。对于熟悉的人来说,我正试图重现泰坦尼克号教程中基于性别的解决方案 我有:Can';t在python数据帧/数组中将浮点转换为int,python,kaggle,Python,Kaggle,我对Kaggle和Python都是新手,不知道如何转换这个数据集。对于熟悉的人来说,我正试图重现泰坦尼克号教程中基于性别的解决方案 我有: submission = pd.DataFrame({'PassengerId' : test_data.PassengerId, 'Survived' : final_prediction}) print(submission.head()) 这给了我: 帕森格里德活了下来 0 892 0.184130 1 893
submission = pd.DataFrame({'PassengerId' : test_data.PassengerId, 'Survived' : final_prediction})
print(submission.head())
这给了我:
帕森格里德活了下来
0 892 0.184130
1 893 0.761143
2 894 0.184130
3 895 0.184130
4 896 0.761143
我需要将其转换为:
帕森格里德活了下来
0 892 0
1 893 1
2 894 0
3 895 0
4 896 1
同样,我并不真正了解Python,我尝试了一些解决方案,如:
for x in np.nditer(final_prediction, op_flags=['readwrite']):
x[...]=(1 if x[...] >= 0.50 else 0)
这给了我一个浮点值,比如:(在CSV文件中仍然显示为0.0,1.0)
帕森格里德活了下来
0 892 0.
1 893 1.
以及:
给我相同的值(即0,1.)
以下是:
int_prediction = final_prediction.astype(int)
给我所有的0
有什么想法吗?谢谢 首先,请记住,您希望使用尽可能多的矢量化操作,因为这将加快代码的速度!总是很重要。因此,熊猫没有循环,而是有一种奇妙的方式来实现这一点
submission['Survived'] = submission['Survived'].astype(int)
请注意,这将截断值,因此在您的情况下,您可能想说:
submission['Survived][:]+=0.5
执行上述操作之前,将确保在转换为int时0.5的值为1,低于该值的值将截断为0
因此,可以使用函数更改数据类型(可以通过df.dtypes找到列的类型)
这可能是另一种字面上的说法,即应该向上/向下取整,但通过这种简单的数据操作,它应该可以工作;) 您需要应用舍入,然后将结果转换为“int”以删除小数点。
这应该行得通:np.rint(final_prediction).astype(np.int)我上面的最后一次尝试是最接近的。我需要向向量中的每个元素添加0.5。谢谢你关于保持事物矢量化的注释<代码>整数预测=(最终预测+0.5)。aType(整数)
submission['Survived'] = submission['Survived'].astype(int)