我正在使用Pandas来分析来自csv的数据。数据框如下所示:
tech_nbr door_age service_spend service_calls
0 2 -7,987 1 3
1 3 -7,987 1 3
2 231561 -7,987 1 3
3 2531885 13 1 3
4 A451349 9 1 3
现在我想使用以下命令过滤掉负door_age
的所有行,例如第0行和第1行。
df_filtered = df.filter(df.door_age > 0)
但是我收到了错误:
TypeError: '>' not supported between instances of 'str' and 'int'
我猜有些年龄值不是数字,所以我添加了以下行,根据Remove non-numeric rows in one column with pandas
删除非数字door_age
的行
df[df.door_age.apply(lambda x: x.isnumeric())]
它似乎删除了很多行,但我仍然遇到了同样的错误。所以我还使用`df = df.dropna(subset = ['door_age'])过滤掉door_age
的空值行。但它也没有帮助。
为什么我仍然会收到此错误?
答案 0 :(得分:1)
在尝试任何数值计算之前,您需要确保您的系列是数字类型。
在这种情况下,您可以将非数字值强制转换为np.nan
:
df['door_age'] = pd.to_numeric(df['door_age'], errors='coerce')