2015-01-07 28 views
3

我有一個叫做df的df。如何將最後幾列轉換爲pandas中字符串類型的整數

我想將此數據框的最後10列從字符串類型轉換爲整數。我該如何做pythonic的方式?

+0

我認爲'轉換= df [[df.co convert_objects(convert_numeric = True)'應該可以工作 – EdChum

+0

Parens不平衡 – robertevansanders

+0

對不起,試試這個我可以發表一個例子:'df [df.columns [-10:]]。convert_objects(convert_numeric = True )' – EdChum

回答

2

我認爲最快的方法是使用convert_objects和使用標/切割符號,例如選擇最後10列:

In [23]: 

df = pd.DataFrame({'a':['1','2','3','4','5']}) 

df = pd.concat([df]*11, axis=1) 
df.columns = list('abcdefghijk') 
df.info() 
<class 'pandas.core.frame.DataFrame'> 
Int64Index: 5 entries, 0 to 4 
Data columns (total 11 columns): 
a 5 non-null object 
b 5 non-null object 
c 5 non-null object 
d 5 non-null object 
e 5 non-null object 
f 5 non-null object 
g 5 non-null object 
h 5 non-null object 
i 5 non-null object 
j 5 non-null object 
k 5 non-null object 
dtypes: object(11) 
memory usage: 480.0+ bytes 
In [21]: 

converted = df[df.columns[-10:]].convert_objects(convert_numeric=True) 
converted 
Out[21]: 
    b c d e f g h i j k 
0 1 1 1 1 1 1 1 1 1 1 
1 2 2 2 2 2 2 2 2 2 2 
2 3 3 3 3 3 3 3 3 3 3 
3 4 4 4 4 4 4 4 4 4 4 
4 5 5 5 5 5 5 5 5 5 5 
In [22]: 

converted.info() 
<class 'pandas.core.frame.DataFrame'> 
Int64Index: 5 entries, 0 to 4 
Data columns (total 10 columns): 
b 5 non-null int64 
c 5 non-null int64 
d 5 non-null int64 
e 5 non-null int64 
f 5 non-null int64 
g 5 non-null int64 
h 5 non-null int64 
i 5 non-null int64 
j 5 non-null int64 
k 5 non-null int64 
dtypes: int64(10) 
memory usage: 440.0 bytes 

然後,您可以直接分配結果回:

In [31]: 

df[df.columns[-10:]] = converted 
df.info() 
<class 'pandas.core.frame.DataFrame'> 
Int64Index: 5 entries, 0 to 4 
Data columns (total 11 columns): 
a 5 non-null object 
b 5 non-null int64 
c 5 non-null int64 
d 5 non-null int64 
e 5 non-null int64 
f 5 non-null int64 
g 5 non-null int64 
h 5 non-null int64 
i 5 non-null int64 
j 5 non-null int64 
k 5 non-null int64 
dtypes: int64(10), object(1) 
memory usage: 480.0+ bytes 

或做在1班輪︰

In [33]: 

df[df.columns[-10:]] = df[df.columns[-10:]].convert_objects(convert_numeric=True) 
df.info() 
<class 'pandas.core.frame.DataFrame'> 
Int64Index: 5 entries, 0 to 4 
Data columns (total 11 columns): 
a 5 non-null object 
b 5 non-null int64 
c 5 non-null int64 
d 5 non-null int64 
e 5 non-null int64 
f 5 non-null int64 
g 5 non-null int64 
h 5 non-null int64 
i 5 non-null int64 
j 5 non-null int64 
k 5 non-null int64 
dtypes: int64(10), object(1) 
memory usage: 480.0+ bytes 
相關問題