有没有一种优雅的方法来选择pandas列中数据类型为float的所有行?

时间:2018-07-12 14:12:01

标签: pandas dataframe types

之类的优雅功能
df[~pandas.isnull(df.loc[:,0])]

可以检查pandas DataFrame列并返回整个DataFrame,但要删除所选列中的所有NaN值行。

我想知道是否有类似的函数可以检查并返回以dtype为条件的df列,而无需使用任何循环。

我看过

.select_dtypes(include=[np.float])

但是这只会返回完全具有float64值的列,而不是具有浮点数的列中的每一行。

1 个答案:

答案 0 :(得分:0)

首先,让我们设置一个包含两列的DataFrame。仅列b具有浮点数。我们将尝试找到此行:

df = pandas.DataFrame({
    'a': ['qw', 'er'],
    'b' : ['ty', 1.98]
})

打印时,外观如下:

    a     b
0  qw    ty
1  er  1.98

然后创建一个地图,以使用apply()

选择行
def check_if_float(row):
    return isinstance(row['b'], float)

map = df.apply(check_if_float, axis=1)

这将给出在b列中具有浮点数的所有行的布尔映射:

0    False
1     True

然后您可以使用此地图选择所需的行

filtered_rows =  df[map]

在b列中只留下包含浮点数的行:

    a     b
1  er  1.98