首页 > 解决方案 > 在 Python 中使用 $ 符号将对象更改为整数

问题描述

我正在使用熊猫将数据作为数据框读取。

spend = pd.read_csv("Direct Spend.csv", encoding='unicode_escape', low_memory=False) 

其中一列是一个数量变量,每个 dtype 显示为Object。要对此变量运行汇总统计信息,我试图将其更改为整数,如下所示:

spend['Actual_PO']=spend['Actual_PO'].astype(str).astype(int)    

这显示一个错误:

invalid literal for int() with base 10: ' $ '

查看数据后,我发现它很$简单,我使用以下代码将其删除:

spend['Actual_PO'] = spend['Actual_PO'].replace({'\$':''}, regex = True)    

这发生了变化,但它仍然显示为该变量的对象。同样,还有其他错误消息:

invalid literal for int() with base 10: ' 1,517 '

spend['Actual_PO'] = spend['Actual_PO'].replace({',':''}, regex = True    

我也删除了 1,517,但现在错误是:

invalid literal for int() with base 10: ''

有没有更好的方法将具有$符号、空格、逗号等数字的对象转换为整数以对变量运行汇总统计信息。数据已从 SAP 数据库下载

标签: pythonregex

解决方案


默认空值为零:

spend['Actual_PO'] = spend['Actual_PO'].str.replace(r'\D+','').replace(r'^\s*$', '0', regex=True).astype(int)

所以,

  • .str.replace(r'\D+','')删除所有非数字
  • .replace(r'^\s*$', '0', regex=True)将空白值替换为0
  • .astype(int)将所有转换为 int 类型。

推荐阅读