Python 基于其他列的数据帧筛选器str列
我想根据一个字符串列的值是否是另一个字符串列中的值的子字符串来过滤数据帧 根据2岁的帖子,这可以通过如下方式进行:Python 基于其他列的数据帧筛选器str列,python,string,pandas,vectorization,apply,Python,String,Pandas,Vectorization,Apply,我想根据一个字符串列的值是否是另一个字符串列中的值的子字符串来过滤数据帧 根据2岁的帖子,这可以通过如下方式进行: df = pd.DataFrame({'FNAME': ['Max', 'Tobi'], 'LNAME': ['Foo', 'Tobiwan']}) df.loc[ df.apply(lambda row: row.FNAME in row.LNAME, axis=1) ] FNAME LNAME 1 Tobi Tobiwan 我想知道是否有一些内置的矢量化方法
df = pd.DataFrame({'FNAME': ['Max', 'Tobi'], 'LNAME': ['Foo', 'Tobiwan']})
df.loc[ df.apply(lambda row: row.FNAME in row.LNAME, axis=1) ]
FNAME LNAME
1 Tobi Tobiwan
我想知道是否有一些内置的矢量化方法可以做到这一点?使用
replace
df[df.LNAME.replace(regex=r'(?i)'+ df.FNAME,value=True)==True]
FNAME LNAME
1 Tobi Tobiwan
没有一种超高效的方法可以做到这一点,因为
pandas
string方法不是特别快。您可能可以使用列表理解来提高性能:[x in y for x,y in zip(df.FNAME,df.LNAME)]
使用regex和replace很好地使用了不区分大小写的功能。我不认为我们可以使用value==True,而只能使用True。漂亮的1:)+1