簡體   English   中英

通過比較行過濾 pandas pandas dataframe

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM