2016-05-26 71 views
1
x = DataFrame([(1,2.0),(2,4.0)], columns=['a','b']) 
x.dtypes 
a  int64 
b float64 
a = x.irow(0) 
a 
output: 
a 1.0 
b 2.0 
Name: 0, dtype: float64 

爲什麼熊貓自動轉換爲float?在使用irow之後,如何在不使用astype/cast的情況下將int列保留爲int?熊貓irow()自動將int轉換爲浮點數

回答

1

它使dtype被提升爲float返回該行的Series由於float在山坳存在b

In [33]: 
type(x.irow(0)) 

Out[33]: 
pandas.core.series.Series 

而且該方法已被棄用,你應該使用iloc

In [31]: 
x.iloc[0] 

Out[31]: 
a 1.0 
b 2.0 
Name: 0, dtype: float64 

實際上,這不是一個真正的問題,因爲訪問一行的特定列將保留dtype

In [36]: 
x['a'].iloc[0] 

Out[36]: 
1 

In [37]: 
type(x['a'].iloc[0]) 

Out[37]: 
numpy.int64 
+0

爲什麼它改變爲浮動?我不希望該字段自動轉換。 我在我的數據框中有30列,我不想把每一個都投入到int – Aviad

+0

那麼'dtype'應該用於沒有'dtype'升級的'Series'嗎? – EdChum