python - 过滤掉另一列字符串的某一行中包含字符串字段的行

标签 python pandas csv

有两个 Pandas 数据集

csv1 = pandas.read_csv('test1')
csv2 = pandas.read_csv('test2')

如何显示 csv1str1 字段不是 csv2 任何行的子字符串的所有行str2 字段?

注意:我尝试使用 contains但似乎它的参数pat应该是一个字符串而不是一列字符串。

<小时/>

示例:

#csv1
id str1
1  abc
2  def
3  ghi
4  xyz

#csv2
data1 str2
69236 pghiww
9623  habcrv
6152  de

那么输出应该是:

id str1
2  def
4  xyz

事实上,第 2 行和第 4 行的 str1 字段不包含在 csv2str2 的任何行中。

最佳答案

这个问题的挑战不仅是检测是否存在匹配,还要找出匹配的内容,并进行相应的过滤。在推导式中使用 str.contains 的一个选项:

csv1 = csv1.iloc[[~csv2.str2.str.contains(x).any() for x in csv1.str1]]
print(csv1)
   id str1
1   2  def
3   4  xyz

关于python - 过滤掉另一列字符串的某一行中包含字符串字段的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46858780/

相关文章:

python - 为什么 html 文件中没有定义来自 ipywidgets 的小部件?

python - Pandas 中的十进制四舍五入

python - 如何使用 apply 将多行从 python 函数返回到 pandas 数据框?

python - 在python中读取/写入字典到csv文件

python - 如何使用 python-docx 添加带有索引的数据框

python - 如何从 python 3 中的嵌套列表中删除多个项目?

linux - 仅当包含它的行还包含使用 Bash 在另一个文件中找到的数字时,如何替换文件中的字符串?

python - 如何使用 Pandas 保存行内的列表

python - 使用广播过滤带有索引的多维数组

python - 如何在 Python pandas DataFrame 中对列值进行切片