2014-03-28 51 views
2

從另一列中出現的一列列中的字符串中刪除單詞的過程是什麼?刪除出現在其他列中的單詞,Pandas

如:

Sr  A    B       C 
1  jack  jack and jill     and jill 
2  run   you should run,    you should , 
3  fly   you shouldnt fly,there  you shouldnt ,there 

可以看出,我想column C,使得其一個的B減內容。請注意第三個示例,其中fly後跟一個逗號,所以它還應考慮標點符號(如果代碼更傾向於檢測其周圍的空間)。
Column A也可以有2個單詞,所以這些都需要刪除。
我需要在熊貓的表情,一樣的東西:

df.apply(lambda x: x["C"].replace(r"\b"+x["A"]+r"\b", "").strip(), axis=1) 
+0

列A會包含一個單詞嗎?如果它有更多的單詞,我們是否必須在第2列中找到確切的字符串作爲匹配?或者它可能是隨機排列的字符串? –

+0

完全匹配的情況下,有2個單詞..「在那裏飛」在A應該匹配「在那裏飛」B並將其刪除。 –

回答

3

試試這個:

x['C'] = x['B'].replace(to_replace=r'\b'+x['A']+r'\b', value='',regex=True) 

它是基於一個previous answer並在someone告訴我如何做到這一點恰好大熊貓。我改變了一點,以適應目前的情況:)

+0

謝謝,工作很好! –

3

這個怎麼樣?

In [24]: df 
Out[24]: 
    Sr  A      B 
0 1 jack   jack and jill 
1 2 run   you should run, 
2 3 fly you shouldnt fly,there 

[3 rows x 3 columns] 

In [25]: df.apply(lambda row: row.B.strip(row.A), axis=1) 
Out[25]: 
0     and jill 
1   you should run, 
2 ou shouldnt fly,there 
dtype: object 
+0

應該是這樣 - ?? df ['C'] =你的表達? –

+0

它看起來好像這個表達式是以「字母到字母」爲基礎進行評估的。如果有一個詞說「私刑」,當它與「蒼蠅」比較時,它會從私刑中刪除「ly」..我不想這樣..也許字邊界排序可能有所幫助.. –

+0

是的,你需要可能使用正則表達式。也要正確地抓住標點符號。我稍後再看一遍。 – TomAugspurger

相關問題