繁体   English   中英

Select pandas 列是 substring 的行

[英]Select pandas rows where column is a substring

我想过滤我的 dataframe 以便只选择具有包含另一个字符串的 substring 的列的行。 我知道可以这样做相反的事情:

selection = df[df.str.contains(substring)]

但是我该怎么做才能使 substring 在 dataframe 中并将其与另一个字符串进行比较。 我试过的是

import pandas
a = pandas.DataFrame({"b":["foo","bar"]})
selection = a[a.b.str in "foot"] # should match first row
selection = a[a.b.str.isin("foot")] # should match first row
selection = a[a.b.str.isin("foobar")] # should match both rows

但这些行不通

你可以这样做。

import pandas as pd
a = pd.DataFrame({"b":["foo","bar"]})
selection = a[a.b.apply(lambda x: x in "foot")] # should match first row
selection = a[a.b.apply(lambda x: x in "foot")] # should match first row
selection = a[a.b.apply(lambda x: x in "foobar")] # should match both rows

你可以尝试像这样制作 function:

f = lambda substring: substring in string

其中string是您的目标字符串。 然后,将这个 function 逐元素应用于 df。

df.applymap(f)

这应该返回一个 DataFrame,其中元素是目标字符串的 substring,如果不是,则返回 False。 要找出哪些行包含 True,即包含作为目标字符串子字符串的元素,请df.any()

df.applymap(lambda substring: substring in string).any(axis = 1)

如果你只想 select 这些行使用切片:

df[df.applymap(lambda substring: substring in string).any(axis = 1)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM