我有一个用于测试样本的 Df,其中一些被重做(重做),现在我只想过滤原始样本
col
a
b
a_redo
b_redo
c
d
e
f
g
g_redo
出
col
a
b
g
这是我用来过滤重做样本的代码(_L _Q _S 是重做前缀)
sample[sample['col'].str.contains("_L|_Q|_S")]
答案 0 :(得分:0)
按Series.str.endswith
仅过滤redo
值,按Series.str.replace
将其删除,然后按Series.isin
过滤列中的原始值:
vals = sample.loc[sample['col'].str.endswith("redo"), 'col'].str.replace('_redo','')
df = sample[sample['col'].isin(vals)]
print (df)
col
0 a
1 b
8 g
带着你的面具:
vals = sample.loc[sample['col'].str.contains("_L|_Q|_S"), 'col'].str.replace("_L|_Q|_S",'')
df = sample[sample['col'].isin(vals)]
答案 1 :(得分:0)
mask_redo = sample['col'].str.contains("_L|_Q|_S")
mask_orig = - mask_redo
sample_orig = sample.loc[mask_orig]
基本上,通过在选择包含重做后缀的字符串的掩码之前放置减号,您可以反转选择:您现在有一个选择不包含重做后缀的字符串的掩码,即您的原始样本。