为什么我不能在数字列上过滤Pandas数据帧

时间:2018-03-30 21:06:57

标签: python pandas dataframe

我正在使用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的空值行。但它也没有帮助。

为什么我仍然会收到此错误?

1 个答案:

答案 0 :(得分:1)

在尝试任何数值计算之前,您需要确保您的系列是数字类型

在这种情况下,您可以将非数字值强制转换为np.nan

df['door_age'] = pd.to_numeric(df['door_age'], errors='coerce')