python - 在 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 数据库下载
解决方案
默认空值为零:
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 类型。
推荐阅读
- php - Symfony - 按定义的状态渲染视图
- xcode - 在 IOS 12-Xamarin 上获取 CONNECTED WIFI 的 SSID(针对 iOS 13 更新)
- javascript - 在asp.net mvc 5中使用jQuery ajax的html表中没有填充Json数据
- react-native - 如何将 View 定位在 ScrollView 的底部?
- javascript - 无法在我的 HTML/JS 页面上获取背景图片
- javascript - 加载 JS 脚本,当用户按下浏览器上的后退按钮时
- java - java - 如何防止JSON响应中未使用的值在Java中使用Springfox返回为null?
- c# - 在 C# 控制台自托管 Web API 中实现 oAuth2.0 时出错
- python - TypeError:列表索引必须是整数或切片,而不是浮点数
- javascript - tsc 错误地将 .ts 文件编译成 .js