我有一個資料集,我想在其中創建一個從現有列之一派生的新列。該列是通過提取第一個和最后一個冒號之間的值來創建的。
資料
site stat crate
AA - site 1 ok AD1:00:AB5.30:100
AA - site 1 ok AD1:00:AB5.30:111
A1 - site 2 fail AD1:00:AB5.30:200
AA - site 1 ok AD1:00:AB5.30:555
BB - site 8 fail BB5:01:BA8.40:777
期望的
site stat main_cr crate
AA - site 1 ok 00:AB5.30 AD1:00:AB5.30:100
AA - site 1 ok 00:AB5.30 AD1:00:AB5.30:111
A1 - site 2 fail 00:AB5.30 AD1:00:AB5.30:200
AA - site 1 ok 00:AB5.30 AD1:00:AB5.30:555
BB - site 8 fail 01:BA8.40 BB5:01:BA8.40:777
正在做
My approach is to use some form of regex or split.
df['main_cr'] = df['crate'].str.split(':').str[1:3]
以上不起作用,因為它提供了結果
[00, AB5.30]
我想通過提取資料框中現有列的第一個和最后一個冒號之間的值來創建一個新列。
任何建議都是有幫助的謝謝
uj5u.com熱心網友回復:
使用pd.extract,并根據正則運算式模式進行提取
df['main_cr']=df['crate'].str.extract(r':(\d{2}:.*):')
df
正則運算式:它匹配第一次出現的“:”,后跟兩位數字,指定為 {2},后跟冒號“:”,然后是后續出現的冒號“:”之前的任意數量的字符。括號中的 b/w 運算式被提取出來。
site stat crate main_cr
AA - site 1 ok AD1:00:AB5.30:100 00:AB5.30
AA - site 1 ok AD1:00:AB5.30:111 00:AB5.30
A1 - site 2 fail AD1:00:AB5.30:200 00:AB5.30
AA - site 1 ok AD1:00:AB5.30:555 00:AB5.30
BB - site 8 fail BB5:01:BA8.40:777 01:BA8.40
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/488940.html
