![](/img/trans.png)
[英]Select rows in pandas where value in one column is a substring of value in another column
[英]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.