我是pandas的新手,并试图找出如何将格式化为字符串的多列转换为float64的.目前我正在做下面的事情,但似乎apply()或applymap()应该能够更有效地完成这项任务......不幸的是,我有点太过新手了解如何.目前,这些值的格式为字符串,如'15 .5%'
for column in ['field1', 'field2', 'field3']:
data[column] = data[column].str.rstrip('%').astype('float64') / 100
Run Code Online (Sandbox Code Playgroud)
Jef*_*eff 12
从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)
Run Code Online (Sandbox Code Playgroud)
而且快一点
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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25044 次 |
最近记录: |