如何移除DataFrame中指定列包含非数值的行?
解决方法
直接用pd.to_numeric配合布尔索引就能搞定,不用额外加ID列,步骤更简洁高效:
import pandas as pd df = pd.DataFrame( {'a': [0.1,0.5,'10 / 5', 9.0, 125], 'b': [10, 5, 60, 12, 'a'], 'c': ['x', 'y', 'z', 'w', 'w'] }) # 对a、b列尝试转换为数值,无法转换的标记为NaN numeric_check = df[['a', 'b']].apply(pd.to_numeric, errors='coerce').notna().all(axis=1) # 筛选出a、b列均为有效数值的行 result_df = df[numeric_check] print(result_df)
运行后输出就是你想要的结果:
a b c 0 0.1 10 x 1 0.5 5 y 3 9.0 12 w
原方法的问题
你用UUID生成唯一ID再合并的方式绕了弯路,不仅多余生成了ID列,还会把ID列也参与数值转换(完全没必要),增加了无意义的计算量。直接通过布尔索引筛选符合条件的行,是最直接的解决方案。
内容的提问来源于stack exchange,提问作者Test
相关产品推荐
相关产品推荐

