Pandas如何判断一列的子串是否存在于另一列中
用pandas.apply实现列间子串匹配判断
完全可以通过df.apply实现需求,核心是指定按行遍历(axis=1),对每行的两个字段做匹配判断即可,完整实现代码如下:
import pandas as pd # 构造示例数据 dct = {'col_1': ['X_a', 'Y_b'], 'col_2': ['a_b_c', 'c_d_e',]} df = pd.DataFrame(dct) # 用apply按行处理生成result列 df['result'] = df.apply( lambda row: row['col_1'].split('_')[1] in row['col_2'], axis=1 ) print(df)
运行上述代码即可得到你需要的输出结果:
col_1 col_2 result 0 X_a a_b_c True 1 Y_b c_d_e False
逻辑说明
apply参数axis=1表示遍历DataFrame的每一行,每次传入的row就是当前行的所有字段数据- 先对
row['col_1']按下划线_拆分,取下标为1的元素(也就是下划线后的子串)作为匹配目标 - 直接用
in运算符判断该子串是否存在于row['col_2']中,返回布尔值作为result列的取值
如果后续你的col_1拆分规则有变化,只需要调整lambda表达式里的拆分逻辑即可适配。
内容的提问来源于stack exchange,提问作者lamiren
相关产品推荐
相关产品推荐

