在Pandas中删除ID列不符合特定后缀模式的行
使用正则表达式过滤Pandas DataFrame的ID列
问题说明
假设存在如下Pandas DataFrame:
ID Name Age ABC-123 XYZ 22 ABC-345 LMK 12 ABC-123-1 MNO 22
需要对ID列进行过滤,仅保留符合ABC-123模式的行(前缀为3个字母,后跟连字符,再跟任意数量的数字,无额外字符),最终得到结果:
ID Name Age ABC-123 XYZ 22 ABC-345 LMK 12
实现方案
1. 创建示例DataFrame
首先导入Pandas并构造测试数据:
import pandas as pd data = { 'ID': ['ABC-123', 'ABC-345', 'ABC-123-1'], 'Name': ['XYZ', 'LMK', 'MNO'], 'Age': [22, 12, 22] } df = pd.DataFrame(data)
2. 编写正则表达式并过滤
使用str.match()方法搭配正则表达式^[A-Z]{3}-\d+$实现过滤:
^:匹配字符串起始位置[A-Z]{3}:匹配3个大写字母(若需支持小写可改为[A-Za-z]{3})-:匹配连字符\d+:匹配一个或多个数字$:匹配字符串结束位置
执行过滤的代码:
filtered_df = df[df['ID'].str.match(r'^[A-Z]{3}-\d+$')]
3. 验证结果
运行后filtered_df将输出符合要求的行:
ID Name Age 0 ABC-123 XYZ 22 1 ABC-345 LMK 12
内容的提问来源于stack exchange,提问作者Sheryar Khan
相关产品推荐
相关产品推荐

