删除熊猫多列中包含字符串的所有行

时间:2020-08-09 23:57:01

标签: python pandas dataframe slice

我有一个很大的数据框,有很多列。我想检查所有列并删除包含字符串'MU'的任何实例的任何行,并且有些列具有'MU#1'或'MU#2',它们有时会切换位置(例如'MU #1将在索引1的第1列中,而'MU#2'将在索引1的第1列中)。最初,我尝试使用此命令将其删除,但是如果我尝试对上述两个字符串都这样做,将变得非常麻烦:

eadev

这可能有效,但是我必须与其他数据帧一起重复此切片几次,并且我想有一条更简单的路线。我的栏目也比上面显示的要多,但这只是一个片段。 简而言之,需要检查所有列的“ MU”,并删除带有“ MU”的行。谢谢!

2 个答案:

答案 0 :(得分:1)

我们如何处理 val result = drawable.bitmap.copy(Bitmap.Config.ARGB_8888, true) for (y in 0 until result.height) for (x in 0 until result.width) { val dstColor = Color.argb(100, 255, 255, 255) result.setPixel(x, y, dstColor) }

all

更新

df = df[df[['phase_1','phase_2','phase_3','phase_4']].ne('MU#1').all(1)]

答案 1 :(得分:1)

您也可以尝试.str.contains()并将其应用于数据框。这样可以避免硬编码列,以防万一

df[df.apply(lambda x: (~x.str.contains('MU', case=True, regex=True)))].dropna()

df[~df.stack().str.contains('MU').any(level=0)]

工作方式 s

选项1

df.apply()x.str.contains中使用时,#是包含datframe中任何列的通配符

x.str.contains('MU', case=True, regex=True)是datframe中任何包含'MU',区分大小写和正则表达式的列的通配符

~相反,因此最终导致没有MU的行

结果数据帧在不满足条件的情况下返回NaN.dropna()因此消除了带有NaN

的行

选项2

df.stack()# Stacks the dataframe
df.stack().str.contains('MU')#boolean selects rows with the string 'MU'
df.stack().str.contains('MU').any(level=0)# Selects the index
~df.stack().str.contains('MU').any(level=0)# Reverses the selection taking only those without string 'MU'