python - 我将如何选择 pandas 中与字符串列表匹配的行,而不仅仅是一个特定的字符串?

标签 python pandas

假设我们有一个数据框 - 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/

相关文章:

python - 将日期转移到规范化的日期列中

python - 使用 toPandas 时强制将 null 一致转换为 nan

python - 根据正值和负值对数据框列的值进行排序?

python - 在 Python 中使用符号创建金字塔

python - 滚动到 ScrolledWindow/TextView 的末尾

python - ZODB/repoze.catalog - 将对象和目录保存在同一数据库中?

python - 合并两个数据帧并分别添加 resp 列

python - 在 QMainWindow 上显示的自定义 QGraphicsView 中的 PyQT 绘图

python - 为什么我的代码不打印整个列表?

Python Pandas 动态创建数据框