Skip to main content
 首页 » 编程设计

python之Pandas 将列从字符串转换为 float

2025年05月04日26webabcd

对于下面的数据框,我正在使用代码

df['%'] = ((df['Code Lines'] / df['Code Lines'].sum()) * 100).round(2).astype(str) + '%' 

输出

Language    # of Files  Blank Lines Comment Lines   Code Lines  %  
C++              15          66           35            354    6.13% 
C/C++ Header      1           3            7              4    0.07% 
Markdown          6           73           0            142    2.46% 
Python           110         1998       2086           4982    86.27% 
Tcl/Tk            1          14           18            273    4.73% 
YAML              1           0            6             20    0.35% 

我正在尝试将 str 转换为 float

df['%'] = df['% of Total (Code Only)'].astype('float64') 

获取错误

File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas/core/dtypes/cast.py", line 730, in astype_nansafe return arr.astype(dtype, copy=True) ValueError: could not convert string to float: '0.35%'

有没有办法将列 % 与符号 % 一起保持为 float

请您参考如下方法:

使用 str[:-1] 删除最后一个值 (%) by indexing with str :

df['%'] = df['%'].str[:-1].astype('float64') 

但如果可能的话更好的是:

df['%'] = ((df['Code Lines'] / df['Code Lines'].sum()) * 100).round(2) 

print (df) 
       Language  # of Files  Blank  Lines Comment  Lines Code Lines      % 
0           C++          15     66             35               354   6.13 
1  C/C++ Header           1      3              7                 4   0.07 
2      Markdown           6     73              0               142   2.46 
3        Python         110   1998           2086              4982  86.27 
4        Tcl/Tk           1     14             18               273   4.73 
5          YAML           1      0              6                20   0.35