从float类型转换为int类型后,为什么数字在python中都变成了-1?

时间:2019-03-08 04:35:21

标签: python pandas numpy

这是我输入的代码:

df = pd.DataFrame({'A': [1.6,1.2,3.9,4.5, np.nan]})  
df['A'] = df['A'].fillna(-1).astype(int)  
for i in df['A']:  
    df["B"] = i  
df  

但是我得到的结果是这样的:

enter image description here

那为什么B列都显示为-1而不是A列呢?

3 个答案:

答案 0 :(得分:2)

您正在使用i将整个列设置为df["B"] = i。在您的上一次迭代中,i-1,因此整个列B都设置为-1

如果您想将B设置为A,则可以使用它(不需要for循环):

df['B'] = df['A']

答案 1 :(得分:0)

在for循环中,每次都重新分配df["B"]的整个值。转换为整数时,df['A']np.nan)中的最后一个值为-1。由于您将df["B"]设置为一个整体,因此所有值均分配为-1

答案 2 :(得分:0)

更改

for i in df['A']:
    df["B"] = i 

for i, item in df['A'].items():
    df.ix[i, "B"] = item