目前我在熊貓資料框中有一列。df看起來像這樣:
| 讀名 |
|---|
| NB511043:297:HJJMHBGXJ:1:22110:22730:3876 |
| NB511043:297:HJJMHBGXJ:4:22609:8139:4265 |
| NB511043:298:HT6KCBGXJ:1:13311:16766:2025 |
我希望做的是專門提取此df中每個字串的第5個和第7個元素,并將它們附加到同一資料幀的末尾,如下所示:
| 價值 | 第五元素 | 第 7 個元素 |
|---|---|---|
| NB511043:297:HJJMHBGXJ:1:22110:22730:3876 | 22110 | 3876 |
| NB511043:297:HJJMHBGXJ:4:22609:8139:4265 | 22609 | 4265 |
| NB511043:298:HT6KCBGXJ:1:13311:16766:2025 | 13311 | 2025 |
我目前的方法是創建一個全新的資料str.split框,用于拆分 read_name 中的所有內容,然后簡單地將這些值附加到新的資料框。像這樣
df_read_name= df['read_name'].str.split(":", n = 6, expand = True)
df['5th element']= pd.to_numeric(df_read_name[4])
df['7th element']= pd.to_numeric(df_read_name[6])
但是,我認為這有點麻煩,并希望可能有更快的方法。
一如既往,感謝您的幫助!
uj5u.com熱心網友回復:
你可以str.extract在這里使用:
df[["5th element", "7th element"]] = df["value"].str.extract(r'(?:[^:] :){4}([^:] ):[^:] :([^:] ).*')
uj5u.com熱心網友回復:
如果您真的總是對第 5 和第 7 個元素感興趣,您可以使用帶有 的正則運算式str.extract,但老實說,您的方法是明確而精細的,并且更容易適應:
regex = r'(?:[^:] :){4}([^:] ):[^:] :([^:] )'
df[['5th element', '7th element']] = df['read_name'].str.extract(regex).astype(int)
輸出:
read_name 5th element 7th element
0 NB511043:297:HJJMHBGXJ:1:22110:22730:3876 22110 3876
1 NB511043:297:HJJMHBGXJ:4:22609:8139:4265 22609 4265
2 NB511043:298:HT6KCBGXJ:1:13311:16766:2025 13311 2025
uj5u.com熱心網友回復:
您可以.str.split使用expand=True:
df[["5th element", "7th element"]] = df["read_name"].str.split(":", expand=True)[[4, 6]].astype(int)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/456664.html
