2017-02-24 54 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) 
相关问题