假设我们有一个数据框 - df 和一个标记为“A”的列。对于选择匹配一个字符串 -'some_string' 的行,df['A'].str.contains('some_string') 效果很好。
我的问题是,是否有相应的方法传递给包含字符串列表,以便获得部分匹配?我可以给它一个字符串列表而不是'some_string'吗?我试图避免使用 for 循环和切片数据框并连接到一个新的数据框。
假设数据框是
pd.DataFrame(np.array([['cat', 2], ['rat', 5], ['ball', 8],['string', 8]]),columns=['A', 'B']))
和
list =['at','ll','ac']
所以我想选择有 cat, rat, ball 的行。对于人为设计的例子感到抱歉。
最佳答案
pandas.Series.str.contains
采用字符串或正则表达式。所以你可以从字符串列表中构建一个正则表达式:
import pandas as pd
strings = "fo", "ba"
x = pd.Series(["foo", "bar", "baz", "buzz"])
x.str.contains("|".join(strings))
# 0 True
# 1 True
# 2 True
#3 False
# dtype: bool
如果要匹配的字符串列表很长并且您可能需要 na=False
来忽略 NaN
值,这可能会很慢,如 mentioned in the comments通过 @anky_91 .
关于python - 我将如何选择 pandas 中与字符串列表匹配的行,而不仅仅是一个特定的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55049312/