查找仅包含数字的pandas列的值

时间:2016-03-01 20:46:25

标签: python pandas dataframe

我现在正在从R转换到Python,并有一个示例pandas数据帧,如下所示:

 df = pd.DataFrame({'x': pd.Series([1.0, 'Joe Young', '3M-Fit']), 'y': pd.Series(['1000', '1001', '1002'], dtype=int), 'z' : pd.Series(['Henry', 'Henry','Henry'])})

           x     y      z
0          1  1000  Henry
1  Joe Young  1001  Henry
2     3M-Fit  1002  Henry

当我查看第一列的每一行的数据类型时,它是str和float的组合:

    df['x'].map(lambda x: type(x))

0    <type 'float'>
1      <type 'str'>
2      <type 'str'>
Name: x, dtype: object

我想要做的是打印那些数据框(包括x和y列)的行,其中type(x)是一个浮点数。因此,在这种情况下,我希望将输出示例为:

               x     y      z
0              1    1000   Henry

我看了herehere。但它要么适用于完整的数据帧,要么给出True和False值。我想将它应用于感兴趣的特定列的每一行,并希望在感兴趣的行的所有列中获得实际值。

1 个答案:

答案 0 :(得分:1)

这应该适合你。

df[df.applymap(np.isreal).all(1)]

它定义了所有真实的行,只选择那些行。

对所有数字类型的帐户略有改进,并且还考虑了问题中的编辑。特别是对于编辑,您可以明确地将测试限制为感兴趣的列。

import numbers
df[df[['x','y']].applymap(lambda x: isinstance(x, numbers.Number)).all(1)]