作者:逆夏_Pretty | 来源:互联网 | 2024-12-15 09:14
考虑以下数据结构:data = {'Country': ['United States of America', 'United Kingdom'], 'Part': ['States of America', 'United States']}
。将其转换为Pandas DataFrame后,尝试通过isin()
方法判断'Country'列中的元素是否存在于'Part'列中:
df = pd.DataFrame(data)
df['Check'] = df['Country'].isin(df['Country'])
display(df)
上述代码实际上返回的是每行'Country'列元素是否存在于整个'Country'列,而非'Part'列,因此结果总是True。这显然不是我们想要的效果。
正确的做法应该使用apply()
结合lambda表达式来逐行检查:
df['Check'] = df.apply(lambda row: row['Country'] in row['Part'], axis=1)
print(df)
这样可以得到更准确的结果,例如:
Country Part Check
0 United States of America States of America False
1 United Kingdom United States False
此外,若想同时检查'Part'列中的字符串是否作为子串出现在'Country'列中,可以添加类似的逻辑:
df['ReverseCheck'] = df.apply(lambda row: row['Part'] in row['Country'], axis=1)
通过这种方式,可以全面地分析两个字段之间的包含关系。