下面是我的df:
In [1531]: df = pd.DataFrame({'A':['a','a','a','a','a','a'], 'B':['all::1::all','all::1::all', '100::1::2', 'm::1::a','all::1::all','c::1::29'], 'C':['0::1::1', '0::1::1', '0::1::1','0::1::1', 'all::1::all', 'all::1::all'], 'D':[1,2,3,4,5,6]})
In [1532]: df
Out[1532]:
A B C D
0 a all::1::all 0::1::1 1
1 a all::1::all 0::1::1 2
2 a 100::1::2 0::1::1 3
3 a m::1::a 0::1::1 4
4 a all::1::all all::1::all 5
5 a c::1::29 all::1::all 6
我想从df
中删除所有包含任何子列all
的行。
我可以有任意数量的列,因此需要一个通用的解决方案而不必在所有列上循环。
预期输出:
In [1534]: df[~df.B.str.contains('all') & ~df.C.str.contains('all')]
Out[1534]:
A B C D
2 a 100::1::2 0::1::1 3
3 a m::1::a 0::1::1 4
答案 0 :(得分:2)
使用DataFrame.select_dtypes
选择所有字符串列,替换可能的缺失值,添加分隔符以区分列末尾字符串,sum
用于连接在一起,最后将Series.str.contains
与反掩码一起使用{ {1}}:
~