我有一個熊貓資料框,其中包含一列帶有模式的句子:列的第 1 行:“ID 為 123 或 ID 為 234 或 ID 為 345”列的第 2 行:“ID 為 123 或 ID 為 567 或 ID 為876" 列的第 3 行:“ID 為 567 或 ID 為 567 或 ID 為 298”。
我的目標是提取每一行中的數字并將它們保存在串列或 numpy 陣列中。由于有一個模式(數字總是在“ID is”之后,我認為正則運算式可能是最好的方法(但我不確定如何使用正則運算式在 1 個字串中進行多次提取。
有什么建議嗎?
uj5u.com熱心網友回復:
標準模塊re可以使用'\d '
re.findall('\d ', "ID is 123 or ID is 234 or ID is 345")
獲取串列[123,234,345]。
為了確保您也可以使用'ID is (\d )'
re.findall('ID is (\d )', "ID is 123 or ID is 234 or ID is 345")
在DataFrame您可以使用.str.findall()對所有行執行相同的操作。
import pandas as pd
df = pd.DataFrame({
'ID': [
"ID is 123 or ID is 234 or ID is 345",
"ID is 123 or ID is 567 or ID is 876",
"ID is 567 or ID is 567 or ID is 298",
]
})
print('\n--- before ---\n')
print(df)
df['result'] = df['ID'].str.findall('ID is (\d )')
print('\n--- after ---\n')
print(df)
結果:
--- before ---
ID
0 ID is 123 or ID is 234 or ID is 345
1 ID is 123 or ID is 567 or ID is 876
2 ID is 567 or ID is 567 or ID is 298
--- after ---
ID result
0 ID is 123 or ID is 234 or ID is 345 [123, 234, 345]
1 ID is 123 or ID is 567 or ID is 876 [123, 567, 876]
2 ID is 567 or ID is 567 or ID is 298 [567, 567, 298]
如果您只需要列result,numpy array那么您可以獲得df['result'].values.
如果您需要嵌套串列:df['result'].values.tolist().
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/424147.html
