我有如下所示的 DF:
columna_1 column_2
1 I am Thomas
2 Are you Thomas
3 How are you?
4 I am fine...
5 Jack, what's up?
我有一個這樣的串列:
names = ["Thomas", "Jack"]
我需要的是從串列名稱中查找值,如果有的column_2話,它應該添加新列,其中包含串列中的值。所以它應該是這樣的:
columna_1 column_2 column_3
1 I am Thomas Thomas
2 Are you Thomas Thomas
5 Jack, what's up? Jack
我開始只查找值,但我不確定如何添加具有正確值的新列。下面是我的代碼:
df[df['column_2'].astype("str").apply(lambda x: set(names).issubset(x))]
你有什么主意嗎?感謝幫助!
uj5u.com熱心網友回復:
使用正則運算式:
import re
regex = fr'\b({"|".join(map(re.escape, names))})\b'
df['column_3'] = df['column_2'].str.extract(regex, expand=False)
要同時洗掉非匹配項:
import re
regex = fr'\b({"|".join(map(re.escape,names))})\b'
(df.assign(column_3=df['column_2'].str.extract(regex, expand=False))
.dropna(subset=['column_3'])
)
輸出:
columna_1 column_2 column_3
0 1 I am Thomas Thomas
1 2 Are you Thomas Thomas
4 5 Jack, what's up? Jack
注意。請注意,如果 Thomas 和 Jack 都在句子中,則只有句子中的第一個匹配
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/437652.html
上一篇:如何在Python中加速異步請求
下一篇:用嵌套回圈代碼解釋二維陣列的輸出
