删除列中包含双下划线的行

时间:2019-09-10 18:18:03

标签: pandas dataframe

我有一个名为Box的列名,其中包含4000多个具有唯一变量名的行,该行中的每个变量都由行中字符串中的第一个字母和最后一个数字来区分。例如A_B(1),A__B(1),C__D(3),D__F(2),AA__B(1)。 因为,在这种情况下,我要删除字符串中包含__(双下划线)的所有行。

以前,我已经根据名称完成了。但是我不想被硬编码。我想成为普通人。只需删除所有包含双下划线(__)的行即可。

#to_remove = ['I__ND_LD\(\d+\)', 'I__BS_ND\(\d+\)','I__LN_LN2\(\d+\)','P__ND_LN2\(\d+\)','I__XF_XF2\(\d+\)','P__ND_XF2\(\d+\)']
#eda=eda[~eda.Devices.str.contains('|'.join(to_remove), regex=True)]

请让我知道如何使用模式匹配。

2 个答案:

答案 0 :(得分:0)

使用boolean indexing

df[['__' not in key for key in df['box']]]

示例:

df=pd.DataFrame()
df['box']=['A__C','B','_D','A__F(1)','A(8)']
df['A']=[1,2,3,4,5]
df[['__' not in key for key in df['box']]]

输出

    box  A
1     B  2
2    _D  3
4  A(8)  5

答案 1 :(得分:0)

import pandas as pd
df1 = pd.DataFrame({'A' : ['James', 'Mary', 'John', 'Patricia'],
                    'B' : [30, 37, 30, 35], 
                    'C' : ['Robert', 'Jennifer', 'Michael', 'Linda'], 
                    'D' : ['Drop__A', 'Keep_A', 'Dr__pB', 'Keep_B']})

df1.loc[~df1['D'].str.contains(r'_{2}')]


          A   B         C       D
1      Mary  37  Jennifer  Keep_A
3  Patricia  35     Linda  Keep_B

一个例子:

{{1}}