2016-09-21 70 views
3

我正在使用一个熊猫数据框,并且需要几个列(在以下示例中,x为y)为一个整数,一列为浮点数(l)。看起来,分配一个新的行与一个浮动它重铸整个数据帧作为一个浮动。为什么是这样的,我如何防止它?熊猫数据帧自动类型转换

data = pd.DataFrame(data=[[3103, 1189, 1]],index = None, columns = ['y', 'x', 'l'], dtype = int) 
print data.y 
data.ix[1] = (3, 3, 3.4) 
print data.y 

主要生产:

0 3103 
Name: y, dtype: int32 
0 3103 
1  3 
Name: y, dtype: float64 
+0

你会在这里找到答案:http://stackoverflow.com/questions/22044766/adding-row-to-pandas-dataframe-changes-dtype – IanS

+0

无视我的答案,@IanS链接的是一个更有效的解。 – sage88

回答

1

可以使用每次添加后重铸所有其他列:

data['y'] = data['y'].astype(int) 

不是最有效的解决方案,如果您需要添加大量的在飞行中的列。或者,您可以预先使用Series创建整个数据框,然后将整个事物输入创建时间,如果这是一个选项。