通过比较行过滤熊猫熊猫数据框

时间:2021-02-09 10:56:12

标签: python pandas

我有一个用于测试样本的 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")]

2 个答案:

答案 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]

基本上,通过在选择包含重做后缀的字符串的掩码之前放置减号,您可以反转选择:您现在有一个选择不包含重做后缀的字符串的掩码,即您的原始样本。