
上圖是 df_input 中存盤的資料。
我想從“訪問”列中提取“C#D#”部分并將其放入我創建的新資料框的列中(df_output['VISIT'])。
此外,“D”之后最多可以有兩個數值。
我不確定我是否應該使用“.str.extract”以及如何捕獲緊跟在“D”之后的所有數值
我想得到的輸出是:
C1D1
C1D1
" "
C1D1
請注意 df_input[Visit] 不僅有“C1D1”。它具有 C#D# 結構的變體,因此可以是“C1D12”或“C2D9”。
uj5u.com熱心網友回復:
您可以使用簡單的正則運算式來識別您的模式,然后您可以將函式應用于資料框以將識別器應用于整個列:
import pandas as pd
import re
def extract(year):
matches = re.findall('C\dD\d{1,2}', year)
if matches:
return matches[0] # Assuming you only want to retrieve the first occurrence
df_input = pd.DataFrame(data=['C1D1-Pre', 'C1D12-2hr Post', 'test'], columns=['VISIT'])
df_output = pd.DataFrame()
df_output['VISIT'] = df_input['VISIT'].apply(lambda x: extract(x))
print(df_output)
輸出將是:
VISIT
0 C1D1
1 C1D12
2 None
如果你想要空字串而不是 None,你必須編輯提取函式:
def extract(year):
matches = re.findall('C\dD\d{1,2}', year)
if matches:
return matches[0]
return ""
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/524459.html
上一篇:替換JS中復雜字串中的空格
