Pandas如何统计指定列拆分后字符串在其他列的出现次数?
解决方案
步骤说明
- 把A、B、C列的所有值统一转为字符串类型(避免数字与字符串的类型不匹配问题),存入集合以提升查找效率
- 将D列的字符串按
/分割为子字符串列表 - 逐行统计分割后的子字符串在A、B、C列集合中的出现次数总和,结果存入新列
E
代码实现
import pandas as pd # 构造示例DataFrame data = { 'A': ['a', 'a', 'c'], 'B': [6, 6, 9], 'C': [1, 1, 3], 'D': ['b/5/4', 'a/1/6', '9/c/3'] } df1 = pd.DataFrame(data) # 定义统计匹配次数的函数 def count_matching_parts(row): # 转换A、B、C列值为字符串并存入集合 abc_set = set(str(val) for val in [row['A'], row['B'], row['C']]) # 分割D列字符串为子片段 d_segments = row['D'].split('/') # 统计匹配的子片段数量 return sum(1 for seg in d_segments if seg in abc_set) # 新增E列存储统计结果 df1['E'] = df1.apply(count_matching_parts, axis=1) # 查看最终结果 print(df1)
输出结果
A B C D E 0 a 6 1 b/5/4 0 1 a 6 1 a/1/6 3 2 c 9 3 9/c/3 3
内容的提问来源于stack exchange,提问作者smelling lady
相关产品推荐
相关产品推荐

