在熊猫数据框列中查找非数字值
Posted
技术标签:
【中文标题】在熊猫数据框列中查找非数字值【英文标题】:Find non-numeric values in pandas dataframe column 【发布时间】:2020-06-14 18:01:54 【问题描述】:我在包含数字和字符串的数据框中有一列。所以我通过df.column.replace(["A", "B", "C", "D"], [1, 2, 3, 4], inplace=True)
用数字替换了字符串。
但该列仍然是 dtype "object"。我无法对列进行排序(TypeError 错误:'str' 和 'int' 的实例之间不支持'
现在我如何识别那些是字符串的数字?我尝试了print(df[pd.to_numeric(df['column']).isnull()])
,它按预期返回了一个空数据框。但是我读到这在我的情况下不起作用(实际数字保存为字符串)。那么如何识别那些保存为字符串的数字呢?
如果一列仅包含 REAL 数字(int 或 float),它会自动更改为 dtype int 或 float,我对吗?
谢谢!
【问题讨论】:
您可以将数据框发布到问题中吗?你可以edit这个问题并更新它。 【参考方案1】:您可以将pd.to_numeric
与以下内容一起使用:
df['column'] = pd.to_numeric(df['column'], errors='coerce')
对于errors
参数,您几乎没有选择,请参阅参考文档here
【讨论】:
【参考方案2】:你可以改变数据类型
df.column.dtype=df.column.astype(int)
【讨论】:
它说:“AttributeError: can't set attribute”...我认为有字符串但是如何找到它们? print(set(df.column)) 它将显示唯一值,因此您可以找到添加了数值的字符串 好吧,我猜有一些字符串和浮点数(例如 '1' 或 5.0):0, 1, 2, 3, 4, 5.0, 6, 7, 8, 9, 10 , 11, 12, 13, '1', 15, 16, 17, 18, 19, 20, 21, 22, 14, 23, '3', 25, 27, 28, 26, 30, 31, 32, 33 , 29, 35, 36, 38, 39, 40, 42, '17', '27', '11', '2', '9', '7', '4', 99, '6', - 1, 24, '5', -2 用 df.column = df.column.astype(int) 可以解决问题,非常感谢!以上是关于在熊猫数据框列中查找非数字值的主要内容,如果未能解决你的问题,请参考以下文章