1

我有一个数据框,其中 A 列填充了数字 1-9。我只想过滤数字 2 和 3。 isin 不适用于 float dtypes。有替代方案吗?

类似于:

df=df.loc[df['ColA'].isin([2,3])]
4

2 回答 2

1

我认为如果需要测试2.0, 3.0, 2, 3您的解决方案是否运行良好。

df = pd.DataFrame({'ColA': [2.0, 6, -1, 3.0]})
print (df.loc[df['ColA'].isin([2,3])])
   ColA
0   2.0
3   3.0

如果需要将浮点数转换为整数:

df=df.loc[df['ColA'].astype(int).isin([2,3])]
于 2021-08-20T08:33:02.060 回答
1

或者您可以尝试pd.to_numeric转换floatint

df = df.loc[pd.to_numeric(df['ColA'], downcast=int).isin([2, 3])]
于 2021-08-20T08:33:55.420 回答