python - 根据列值删除行 - 但不仅仅是一个列值 - 值列表
问题描述
如果列包含“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
但是,如果您希望它删除该行,如果该列包含另一个数据框列内的任何内容,那么假设我们有第二个数据框
df2 = pd.DataFrame(dict(A=["XYZ","ABC","EFg","6","foo"], C=["test","bar","testABC", "ba6t"]))
所以我想做一些事情列出这个(注意 pusdo 代码)
df[df.C.str.contains(df2.'Column A') == False]
如果 df 列 C 包含 df2 列 A 内的任何内容,请删除 df 中的行
解决方案
尝试这个,
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()
推荐阅读
- powershell - 在提取和拆分 url 以分离变量时需要帮助
- python - 使用单词列表翻译成英语
- android - 如何设置公开下拉菜单的起始值?
- angular - Angular 7:如何告诉 Angular 编译器/构建器不要包含来自 js 的数据?
- python-3.x - 如何更改此列以便 Pandas 识别它?
- angular - 想要向对象发送新值,但 dropdwon 值已选择
- unix - 在 unix 中调用 shell 脚本的快捷方式
- azure - 如何使用 ARM 模板自动创建 sendGrid 帐户?
- python - 如何使用 python beautifulsoup 从下拉菜单中提取数据
- sql - 创建“不存在”/插入语句 - 无所事事(NULL)