python - 在 Python 中跨多个列应用 str.contains 的问题
问题描述
数据框:
col1 col2 col3
132jh.2ad3 34.2 65
298.487 9879.87 1kjh8kjn0
98.47 79.8 90
8763.3 7hkj7kjb.k23l 67
69.3 3765.9 3510
期望的输出:
col1 col2 col3
98.47 79.8 90
69.3 3765.9 3510
我尝试过的:(这不会删除所有带有字母数字值的行)
df=df[~df['col1'].astype(str).str.contains(r'[A-Ba-b]')] #for col1
df=df[~df['col2'].astype(str).str.contains(r'[A-Ba-b]')] #for col2
df=df[~df['col3'].astype(str).str.contains(r'[A-Ba-b]')] #for col3
我想删除所有字母数字行,并且只有包含数字的行。Col1 和 Col2 有小数点,但 Col3 只有整数。
我已经尝试了一些其他类似的线程,但它没有用。
谢谢您的帮助!!
解决方案
You can just use to_numeric
:
df[df.apply(pd.to_numeric, errors='coerce').notnull().all(1)]
Output:
col1 col2 col3
2 98.47 79.8 90
4 69.3 3765.9 3510
推荐阅读
- python - 一个形状为 (15000, 250) 的目标数组被传递为形状为 (None, 1) 的输出,同时用作损失`binary_crossentropy`。我该怎么办?
- json - json 文件上的 Jinja2 模板
- reactjs - 无法使用 Context API 检索对象 AsyncStorage 的值
- shopify - Shopify 临时站点
- laravel - 如何制作没有重定向到页面 404 laravel 的 slug
- javascript - 从 OAuth 回调重定向到弹出行为
- flutter - 我正在尝试从 VS 代码在模拟器上运行我的颤振应用程序,但我收到一条错误消息,说它找不到我的 main.dart 文件的路径
- botframework - 生成 Direct Line 令牌的问题
- mysql - 根据分布在 3 个表中的状态、ID 和时间验证获取可用用户
- c++ - C++:使用参数包显式调用函数重载