2017-02-24 56 views
1

Pandas iterrows更改列的類型。根據this github問題,這是一個預期的行爲。Pandas iterrows將列的類型更改爲浮動。如何將其轉換回原始類型?

任何想法將其轉換回原始類型的pythonic和優雅的方式? 請注意,我有多個列類型。

小例子

df = pd.DataFrame([range(5), range(5)]) 
df.iloc[:,1] = df.iloc[:,1].astype('float') 
for row in df.iterrows(): 
    print row 

結果與

(0, 0 0.0 
1 1.0 
2 2.0 
3 3.0 
4 4.0 
Name: 0, dtype: float64) 
(1, 0 0.0 
1 1.0 
2 2.0 
3 3.0 
4 4.0 
Name: 1, dtype: float64) 

注意df.dtypes返回類型的列,但是,我想不出用它投行後面的一種優雅的方式到那種類型。

回答

4

嘗試使用df.itertuples代替:

df = pd.DataFrame([range(5), range(5)], columns=list('abcde')) 
df.iloc[:,1] = df.iloc[:,1].astype('float') 

for row in df.itertuples(): 
    print(row) 

Pandas(Index=0, a=0, b=1.0, c=2, d=3, e=4) 
Pandas(Index=1, a=0, b=1.0, c=2, d=3, e=4) 
相關問題