python - 将数据框字符串类别转换为数字

标签 python pandas

我的数据框中有一些列,如下所示:

 total
  NaN
26-27
52-53
88-89
  165
  280
  399
  611
  962
 1407
 1937

我想使用四舍五入将它们转换为数值:
 total
  NaN
   27
   53
   89
  165
  280
  399
  611
  962
 1407
 1937

显然, pd.to_numeric() 不起作用,因为 26-27 是一个对象。可以一个一个的做,但是有没有优雅快捷的转换方式呢?

最佳答案

IIUC,我们可以使用一点正则表达式来提取所有数字,捕获行终止符之前的最后一个元素

之前 \n使用 $\d+匹配一个数字(等于 [0-9])
+量词 - 一次和无限次之间的匹配,次数为

df['total'].str.extract(r'(\d+)$').astype(float)
out:
0        NaN
1       27.0
2       53.0
3       89.0
4      165.0
5      280.0
6      399.0
7      611.0
8      962.0
9     1407.0
10    1937.0
Name: total, dtype: float64

关于python - 将数据框字符串类别转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59515647/

相关文章:

python - 想要将 Pandas Dataframe 绘制为具有 log10 比例 x 轴的多个直方图

python - Pip 全局安装不起作用

python - 在 XCode 4 中运行 PyObjC 模板时发生泄漏

python - 在 Python 中将 Excel 工作表从一个工作表复制到另一个工作表

python opencv - Blob 检测或圆检测

python - 计算 Python/pandas 数组中的连续正值

python - 如何为 pandas 构建带有嵌套 for 循环和条件的列表理解?

python - 配置 python-coveralls

python - 确定与给定值匹配的条目数,按列分组

python-2.7 - df.fillna(0) 命令不会用 0 替换 NaN 值