![](/img/trans.png)
[英]Pandas: Convert multiple columns in DataFrame from object to float
[英]pandas convert strings to float for multiple columns in dataframe
我是pandas的新手,并试图找出如何将格式化为字符串的多列转换为float64的。 目前我正在做下面的事情,但似乎apply()或applymap()应该能够更有效地完成这项任务......不幸的是,我有点太过新手了解如何。 目前,这些值的格式为字符串,如'15 .5%'
for column in ['field1', 'field2', 'field3']:
data[column] = data[column].str.rstrip('%').astype('float64') / 100
从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
df.applymap(lambda x:float(x.rstrip('%'))/100)
在接受的答案中回答评论:对于特定的列,请确保不要在原地进行。
df['Column1'] = df['Column1'].replace('%','',regex=True).astype('float')/100
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.