我想從名為“filename”的字串列中提取用戶 ID,并根據原始字串中特定字符的索引創建一個新的 ID 列。
"filename" 中字串的兩個示例,ID 為 2 或 3 位:
檔案名 = ID 100 session1neg_emotions_rating.csv ---> ID = 100
檔案名 = ID 21 session2neu_emotions_rating.csv ---> ID = 21
我試過這個 -
df['ID '] = df.filename.str[2:**4**]
但我找不到每行切片的 ID 的結束索引(它是 3 或 4,取決于 ID 的長度為 2 或 3 位數字)。
在資料框中的每一行之后找到“s”的索引將解決我的問題。簡單的選項對我不起作用 -
s_index = df.filename.str.index("s")
(我也嘗試了一些拆分選項,但我沒有特定的字符,例如逗號,可以拆分)
非常感謝!對不起,如果它是上一個問題的重復
uj5u.com熱心網友回復:
我會使用正則運算式str.extract:
s_index = df.filename.str.extract("^ID(\d )")
作為整數:
s_index = df.filename.str.extract("^ID(\d )").astype(int)
Regex101解釋
uj5u.com熱心網友回復:
正則運算式的另一種可能是最好的答案是split首先在“會話”上使用并抓取第一個元素,然后另一個split抓取最后一個元素:
df['ID'] = df.filename.str.split('session').str[0].str.split('ID').str[1]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/393398.html
