我正在嘗試從 1 列中提取一些值。有些行有 4 個我要提取的值以及該值的不同符號。
我的資料集:
wow
0 wow-555555 1000110001 DT000333-6403, Hellostreet 45 Town1
1 (wow-666666) - 1000110002; DT000333-6404 Hellostreet 55 Town2
2 wow 777777 DT000333-6405 Hellostreet 56
3 WOW 888888 1000110004 DT000444-6403, Hellostreet 120 Town2
4 (WoW 999999) 1000110005 DT000555-6403, Hellostreet 121 Town3
我需要:
我需要 4 個具有不同值的新列。第一個值是“哇”后面的 6 個數字(總是唯一的)。第二個是 10 位數字(始終唯一)。第三個是 'DT',后面有 10 個數字(總是唯一的)。四是地址。
我試過這個:
df2 = df['wow'].str.extract(r"(?P<number1>\w{3}-\d{6}).*?(?P<number2>\d{10}).*?
(?P<number3>DT\d{6}-\d{4}).*?(?P<address>\w.*|$)")
這讓我得到了令人驚嘆的數字,但只有“-”,而不僅僅是 6 位數字。我也錯過了 10 位數字。設備識別符號和地址有效。
預期結果
number1 number2 number3 address
0 555555 1000110001 DT000333-6403 Hellostreet 45 Town1
1 666666 1000110002 DT000333-6404 Hellostreet 55 Town2
2 777777 NaN DT000333-6405 Hellostreet 56
3 888888 1000110004 DT000444-6403 Hellostreet 120 Town2
4 999999 1000110005 DT000555-6403 Hellostreet 121 Town3
感謝您的幫助和努力。謝謝!
uj5u.com熱心網友回復:
似乎與:
regex = r'\w{3}[-\s](?P<number1>\d{6}).*?(?P<number2>\d{10})?\D*?(?P<number3>DT\d{6}-\d{4}).*?(?P<address>\w.*)'
df2 = df['wow'].str.extract(regex)
輸出:
number1 number2 number3 address
0 555555 1000110001 DT000333-6403 Hellostreet 45 Town1
1 666666 1000110002 DT000333-6404 Hellostreet 55 Town2
2 777777 NaN DT000333-6405 Hellostreet 56
3 888888 1000110004 DT000444-6403 Hellostreet 120 Town2
4 999999 1000110005 DT000555-6403 Hellostreet 121 Town3
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/521228.html
