我有一个名为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)]
请让我知道如何使用模式匹配。
答案 0 :(得分:0)
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}}