pandas - 如何在 pandas DF 列中找出哪些值不能使用 astype 函数转换为“int”类型
问题描述
我正在使用数据框,我必须将列转换为 int 类型
我使用以下符号:
result_df['ftmSectionId'] = result_df['ftmSectionId'].astype('int')
DF 有几百万行,所以显然有些值无法转换为 int (可能包括逗号或句点......)我收到错误:
ValueError: invalid literal for int() with base 10: 'not'
现在根据这个问题: How do I fix invalid literal for int() with base 10 error in pandas
我可以使用:
data.Population1 = pd.to_numeric(data.Population1, errors="coerce")
哪个有效。
但是以这种方式,我不知道为什么首先我会出错。由于我正在使用的数据库的性质,我希望该特定列只有整数。如何使用简单的方法 .astype('int') 查询该列以找出哪些值不能转换为 'int' ?
谢谢
其他可能的答案但不重复: Unable to convert pandas dataframe column to int variable type using .astype(int) method 这个问题解决了同样的问题,只是他们知道问题是列包含 NaN 并且他们删除了它们。我不知道这里有什么问题,我的目标不仅是转换为 'int' 而是抓住麻烦值
解决方案
您仍然可以使用errors="coerce"
然后获取NaN
原始系列中的值:
s = pd.Series(["apple", "1.0", "2", -3, "pear", "12,84"])
nans = pd.to_numeric(s, errors="coerce").isna()
然后布尔索引给出:
>>> s[nans]
0 apple
4 pear
5 12,84
dtype: object
推荐阅读
- reactjs - 如何从 if 语句中正确设置状态
- mysql - windows可以使用navicat连接mysql,但是不能使用mysql cmd或者java jdbc连接,但是linux可以
- opengl - 使用 glVertexAttribFormat 时不获取 OpenGL 输出
- javascript - 在javascript中重新创建自动增量php
- flutter - 我应该在 Flutter 小部件中使用绝对像素值,还是应该将它们缩放到屏幕上?
- javascript - 是否可以有两个带 CSS 的 h2?
- php - imap_open() 返回什么样的数据
- javascript - 如何将我的 axios 对象的 Cookies.get 包装到异步中
- datetime - Flutter - 如何在年、月和日中找到两个日期之间的差异?
- javascript - 完成加载后页面无法加载我的脚本模块