我有一個看起來像這樣的df:
id query
1 select * from table1 where col1 = 1
2 select a.columns FROM table2 a
我只想在字串之后選擇字串(如果您知道 sql,則為表)FROM到一個新列中。FROM可以用不同的大寫字母拼寫(即From, from,FROM,etc)。
如何直接選擇字串之后的字串,From而不是字串之后的下一個FROM字串
我試過了:
df['tableName'] = df['query'].str.extract('[^from]*$')
但這不起作用。我不確定我是否應該立即將整個 df 設為小寫。
新的 df 應該是這樣的:
id query tableName
1 select * from table1 where col1 = 1 table1
2 select a.columns FROM table2 a table2
先感謝您。
uj5u.com熱心網友回復:
你可以試試
df['tableName'] = df['query'].str.extract('(?i)from ([^ ]*)')
(?i)表示忽略大小寫。
print(df)
id query tableName
0 1 select * from table1 where col1 = 1 table1
1 2 select a.columns FROM table2 a table2
uj5u.com熱心網友回復:
這將在沒有正則運算式的情況下為您提供答案,并且應該考慮“表”的所有大寫型別
df['Table_Name'] = df['query'].apply(lambda x : x.lower().split('from')[1]).apply(lambda x : x.split()[0])
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/481388.html
標籤:python-3.x 正则表达式 熊猫
上一篇:pandaspythonregex查找所有以'開頭、結尾或包含'的單詞
下一篇:正則運算式不匹配字串中多個斜杠
