我现在正在从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
我看了here和here。但它要么适用于完整的数据帧,要么给出True和False值。我想将它应用于感兴趣的特定列的每一行,并希望在感兴趣的行的所有列中获得实际值。
答案 0 :(得分:1)
这应该适合你。
df[df.applymap(np.isreal).all(1)]
它定义了所有真实的行,只选择那些行。
对所有数字类型的帐户略有改进,并且还考虑了问题中的编辑。特别是对于编辑,您可以明确地将测试限制为感兴趣的列。
import numbers
df[df[['x','y']].applymap(lambda x: isinstance(x, numbers.Number)).all(1)]