Can';t在python数据帧/数组中将浮点转换为int

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

我对Kaggle和Python都是新手,不知道如何转换这个数据集。对于熟悉的人来说,我正试图重现泰坦尼克号教程中基于性别的解决方案

我有:

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)