如何用单个正则表达式提取Pandas DataFrame混合条目列的字符并计数
Pandas中用单个正则匹配指定模式并计数
正确正则表达式写法
你之前用的[EA+,AA,EA-]是字符类语法,会把里面的每个字符(包括逗号、+、-)当成单个匹配项,完全不符合匹配AA/EE/EA+/EA-这类多字符模式的需求。正确的写法是用选择符|来分隔多个目标模式:
pattern = r'(AA|EE|EA\+|EA-)'
注:+是正则元字符,需要用\转义才能匹配字面意义的加号。
筛选匹配条目并计数
- 筛选符合条件的行
用Pandas的str.contains()过滤出Nachfolger列包含目标模式的条目:
# na=False 避免空值导致的报错 filtered_rows = df[df['Nachfolger'].str.contains(pattern, na=False)]
- 总匹配数
直接获取筛选后DataFrame的行数即可:
total_count = len(filtered_rows) # 或者用shape[0] total_count = filtered_rows.shape[0]
- 按模式分别计数
如果需要统计每个模式各自出现的次数,用str.extract()提取匹配内容后再统计:
pattern_counts = df['Nachfolger'].str.extract(pattern, expand=False).value_counts()
内容的提问来源于stack exchange,提问作者MJK
相关产品推荐
相关产品推荐

