pandas将字符串转换为浮动数据帧中的多个列

时间:2013-05-20 06:23:35

标签: python pandas

我是pandas的新手,并试图弄清楚如何将格式化为字符串的多个列转换为float64。目前我正在做下面的事情,但似乎apply()或applymap()应该能够更有效地完成这项任务......不幸的是,我有点太过新手了解如何。目前,这些值的格式为字符串,如'15 .5%'

for column in ['field1', 'field2', 'field3']:
    data[column] = data[column].str.rstrip('%').astype('float64') / 100

3 个答案:

答案 0 :(得分:11)

从0.11.1开始(本周推出),替换有一个新的选项来替换正则表达式,所以这成为可能

In [14]: df = DataFrame('10.0%',index=range(100),columns=range(10))

In [15]: df.replace('%','',regex=True).astype('float')/100
Out[15]: 
<class 'pandas.core.frame.DataFrame'>
Int64Index: 100 entries, 0 to 99
Data columns (total 10 columns):
0    100  non-null values
1    100  non-null values
2    100  non-null values
3    100  non-null values
4    100  non-null values
5    100  non-null values
6    100  non-null values
7    100  non-null values
8    100  non-null values
9    100  non-null values
dtypes: float64(10)

快一点

In [16]: %timeit df.replace('%','',regex=True).astype('float')/100
1000 loops, best of 3: 1.16 ms per loop

 In [18]: %timeit df.applymap(lambda x: float(x[:-1]))/100
1000 loops, best of 3: 1.67 ms per loop

答案 1 :(得分:1)

df.applymap(lambda x:float(x.rstrip('%'))/100)

答案 2 :(得分:1)

在接受的答案中回答评论: 对于特定列,请确保您不要在现场进行。

df['Column1'] = df['Column1'].replace('%','',regex=True).astype('float')/100