我理解下面的示例,如果某列包含“ XYZ”,则会删除该行:
df = pd.DataFrame(dict(A=[5,3,5,6], C=["foo","bar","fooXYZbar", "bat"]))
In [92]: df
Out[92]:
A C
0 5 foo
1 3 bar
2 5 fooXYZbar
3 6 bat
In [93]: df[df.C.str.contains("XYZ") == False]
Out[93]:
A C
0 5 foo
1 3 bar
3 6 bat
但是,如果您希望它删除该行,而该列在另一个dataframes列中包含任何内容,那么该怎么办?
df2 = pd.DataFrame(dict(A=["XYZ","ABC","EFg","6","foo"], C=["test","bar","testABC", "ba6t"]))
所以我想做一些列出的事情(注意pusedo代码)
df[df.C.str.contains(df2.'Column A') == False]
如果df列C包含df2列A内的任何内容,请删除df中的行
答案 0 :(得分:1)
尝试一下
l=df2['A'].unique().tolist()
reg='|'.join(l)
print df1[df1['C'].str.contains(reg)==False]
输出:
A C
1 3 bar
3 6 bat
去除NaN
l=df2[df2['A'].notnull()]['A'].unique().tolist()
答案 1 :(得分:0)
您可能要检查此内容,因为contains
接受'|'
df[~df.C.str.contains('|'.join(df2.A.tolist()))]
Out[65]:
A C
1 3 bar
3 6 bat