my_df = pd.DataFrame([["a", "a1"],["b", "b1"],["c", "a1"]], columns=["字符", "字符串"])
# 逐行判断,表格中某一列是否包含对应另一列的完整字符串内容
my_df.apply(lambda row: row.字符 in row.字符串, axis=1)
# 判断表格中某一列是否包含另一列的(任意行)的完整字符串内容
my_df.字符串.apply(lambda x: x in my_df.字符串.values) # apply默认对列操作axis=0
先apply判断,再where替换,不能同时
# 逐行判断,如果"判断"列为真,表格中某一列是否包含对应另一列的完整字符串内容
# 不能将上述apply公式用在np.where函数中,因结果是一个列表
# 所以需要先apply生成一个列表,再where替换
# pd.Series.where 如果不为真,则替换,否则默认不替换
# https://blog.51cto.com/u_16055028/6229971
my_df = pd.DataFrame([["a", "a1", True],["b", "b1", False],["c", "a1", True]], columns=["字符", "字符串", "判断"])
my_df["检查"] = my_df.apply(lambda row: row.字符 in row.字符串, axis=1)
my_df["检查"].where(
my_df.判断,
"未通过",
inplace=True # 否则不覆盖
)
my_df.query('''
检查 != True # 不能用is,not进行判断
''')