【发布时间】:2022-01-10 17:25:57
【问题描述】:
我有一个包含多列的数据框,例如:
Name Age Fname
0 Alex 10 Alice
1 Bob 12 Bob
2 Clarke 13 clarke
我的过滤条件是检查Name 是否是对应Fname 的子字符串(不区分大小写)。
如果是平等,那么简单的事情就是:
df[df["Name"].str.lower() == df["Fname"].str.lower()]
有效。但是,我想要子字符串匹配,所以我认为in 会起作用,而不是==。但这会产生错误,因为它将参数之一解释为pd.Series。我的第一个问题是Why this difference in interpretation?
我尝试的另一种方法是使用.str.contains:
df[df["Fname"].str.contains(df["Name"], case=False)]
它也将df["Name"] 解释为pd.Series,当然,也适用于参数中的一些 const 字符串。
eg. this works:
df[df["Fname"].str.contains("a", case=False)]
我想解决这种情况,因此我们非常感谢您提供这方面的任何帮助。
【问题讨论】:
标签: python pandas string dataframe substring