如何在Python DataFrame中筛选SYMBOL列以.开头且首字符为数字的行?
筛选DataFrame中SYMBOL列符合特定格式的行
你之前的代码df1.loc[(df1['SYMBOL'].re.sub(r'.\d')]存在两个问题:一是re.sub是字符串替换方法,无法生成筛选条件;二是正则表达式未转义点号(.在正则中默认匹配任意字符),且缺少开头匹配标识。
正确实现方法
我们需要匹配以.开头,且.后第一个字符为数字的行,可通过pandas的字符串匹配方法实现:
1. 使用str.match(推荐,默认从字符串起始位置匹配)
import pandas as pd # 示例数据 df1 = pd.DataFrame({ 'SYMBOL': ['.1ABC', 'A.2DEF', '.XGH', '.3JKL', 'MN.4O'] }) # 筛选符合条件的行 filtered_df = df1[df1['SYMBOL'].str.match(r'^\.\d')] print(filtered_df)
2. 使用str.contains(需加^强制匹配字符串开头)
filtered_df = df1[df1['SYMBOL'].str.contains(r'^\.\d')]
正则表达式说明
^:锁定字符串的起始位置\.:匹配实际的点号(转义后避免匹配任意字符)\d:匹配任意单个数字
预期输出
SYMBOL 0 .1ABC 3 .3JKL
内容的提问来源于stack exchange,提问作者SGC
相关产品推荐
相关产品推荐

