我有一个Df的测试样本,其中一些是重做(重做)现在我想只过滤原始的
col
a
b
a_redo
b_redo
c
d
e
f
g
g_redo输出
col
a
b
g这是我用来过滤重做示例的代码(_L _Q _S are redo prefix)
sample[sample['col'].str.contains("_L|_Q|_S")]发布于 2021-02-09 18:59:38
仅按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)]发布于 2021-02-09 18:59:38
mask_redo = sample['col'].str.contains("_L|_Q|_S")
mask_orig = - mask_redo
sample_orig = sample.loc[mask_orig]基本上,通过在选择包含重做后缀的字符串的掩码前放置减号,可以反转选择:现在有了一个掩码,它选择了不包含重做后缀的字符串,即原始样本。
https://stackoverflow.com/questions/66117575
复制相似问题