我想知道如何將 Pandas 資料框列值傳遞到正則運算式中。我已經嘗試了以下但得到“型別錯誤:‘系列’物件是可變的,因此它們不能被散列”
我在下面的結果之后。(我可以使用不同的正則運算式,但想知道如何動態完成)
想法表示贊賞:)
to_search search_string search_result
ABC-T3-123 ABC ABC-T3
ABC-T2-123 ABC ABC-T3
DEF-T1-123 ABC DEF-T1
import pandas as pd
# create list for data frame
data = [['ABC-T3-123', 'ABC'], ['ABC-T2-123', 'ABC'], ['DEF-T1-123', 'DEF']]
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['to_search', 'search_string'])
df['search_results']=df['to_search'].str.extract("(" df['search_string'] "-T[0-9])")}```
uj5u.com熱心網友回復:
我知道您想要一個有效的解決方案,但通常這些 Pandas 函式不采用諸如Serieses 之類的值。這是一個apply基于 - 的解決方案,我認為除了簡化正則運算式之外,它是這里唯一可行的解??決方案:
searched = df.apply(lambda row: re.search("(" row['search_string'] "-T[0-9])", row['to_search']).group(1), axis=1)
輸出:
>>> searched
0 ABC-T3
1 ABC-T2
2 DEF-T1
dtype: object
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/377510.html
上一篇:Pandas-為什么使用str.extract回圈比使用str.extractall更快
下一篇:使用正則運算式捕獲任意多個組
