[英]Matching two pandas series: How to find a string element from one series in another series and then create a new column
[英]Pandas: matching a string in series with string from another series
我有一個看起來像這樣的DataFrame:
Full Partial
ABCDEFGHIJKLMNOPQRSTUVWXYZ FGHIJKL
ANLHDFKNADHFBAKHFGBAKJFB FKNADH
JABFKADFNADKHFBADHBFJDHFBADF ABFKA
我想要做的是將Full
中的所有內容與小寫的Partial
不匹配,產生以下內容:
Coverage
abcdef_GHIJKL_mnopqrstuvwxyz
anlhd_FKNADH_fbakhfgbakjfb
j_ABFKA_dfnadkhfbadhbfjdhfbadf
我該怎么做? 我環顧四周,似乎series.str.extract()
可能是一個解決方案,但我不確定,當我嘗試這樣做時:
df['Full'].str.extract(data['Partial'])
......它只說系列不能清洗。 我假設extract
只需要一個參數,而不是一個系列? 有沒有辦法繞過這個? extract
甚至是正確的方法來實現我正在尋找的東西,還是有另一種方式? 我想我也許可以找到提取字符串索引並執行以下偽代碼的方法:
df['Coverage'] = data['Full'][:start].lower() + '_' + data['Partial'] + \
'_' + data['Full'][End:].lower()
...其中Start
和End
是data['Partial']
開始和結束的索引。 思考?
也許不是最優雅,但這里有一個解決方案:
對於df:
Full Partial
0 ABCDEFGHIJKLMNOPQRSTUVWXYZ FGHIJKL
1 ANLHDFKNADHFBAKHFGBAKJFB FKNADH
2 JABFKADFNADKHFBADHBFJDHFBADF ABFKA
這個:
df.apply(lambda r: r.Full.lower().replace(r.Partial.lower(), '_' + r.Partial + '_'), axis=1)
返回:
0 abcde_FGHIJKL_mnopqrstuvwxyz
1 anlhd_FKNADH_fbakhfgbakjfb
2 j_ABFKA_dfnadkhfbadhbfjdhfbadf
對於每一行,將完整字符串轉換為小寫,並將“部分字符串”替換為原始部分字符串,並在兩側添加兩個下划線。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.