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

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')

获取错误



有没有办法将列 % 保持为 float 以及符号 %

最佳答案

使用 str[:-1] 通过 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

关于python - Pandas 将列从 str 转换为 float,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51362825/

10-12 00:31
查看更多