[英]Filter pandas pandas dataframe by comparing rows
我有一個用於測試樣本的 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")]
僅通過 Series.str.endswith 過濾redo
值,通過Series.str.endswith
將其刪除,然后通過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)]
mask_redo = sample['col'].str.contains("_L|_Q|_S")
mask_orig = - mask_redo
sample_orig = sample.loc[mask_orig]
基本上,通過在選擇包含重做后綴的字符串的掩碼之前放置減號,您可以反轉選擇:您現在有一個掩碼,可以選擇不包含重做后綴的字符串,即您的原始樣本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.