【发布时间】:2021-11-01 03:59:14
【问题描述】:
我有以下代码来过滤掉一些数据,但有些值是字符串,具体来说,他们说“待定”。所以首先我过滤掉那些说“待定”的值,然后我设置一个范围(500
(在下面的代码中,'data' 是一个包含 [Company, Normal, CAPEX] 列的数据框,CAPEX 列有整数、浮点数和一个字符串,上面写着 'Pending')
data = data[(data.CAPEX != 'Pending')]
data = data[(data.CAPEX >= 500) & (data.CAPEX <= 1500)]
但随后弹出错误:
TypeError: '>=' not supported between instances of 'str' and 'int'
我想知道我是否可以消除任何字符串,而不仅仅是那些说“待定”的字符串。我已经试过了 数据=数据[(类型(数据.CAPEX)!= str)] 但它没有用。
另外,我不知道 TypeError 是怎么回事。我的列表包含数字,我将它们与另一个数字进行比较,没有字符串。
【问题讨论】:
-
您可以创建一个包含 CAPEX 列和几行示例数据的示例数据框。就目前而言,您似乎希望我们在写答案时做到这一点。
-
根据您创建数据框的方式,pandas 可能已经猜到了数据类型。如果读取 CSV 并且列包含整数和“待处理”的混合,则该列将是字符串值。如果没有“Pending”,那么它将是 int 类型。因此,您的第一次或第二次比较将失败,具体取决于它所选择的。 - 所以值得注意的是你是如何阅读这个 DF 的。
标签: python pandas dataframe row typeerror