我有一個資料框,其中字串格式的列之一看起來像這樣
filename
0 Machine02-2022-01-28_00-21-45.blf.424
1 Machine02-2022-01-28_00-21-45.blf.425
2 Machine02-2022-01-28_00-21-45.blf.426
3 Machine02-2022-01-28_00-21-45.blf.427
4 Machine02-2022-01-28_00-21-45.blf.428
我希望我的專欄看起來像這樣
filename
0 2022-01-28 00-21-45 424
1 2022-01-28 00-21-45 425
2 2022-01-28 00-21-45 426
3 2022-01-28 00-21-45 427
4 2022-01-28 00-21-45 428
我試過這段代碼
df['filename'] = df['filename'].str.extract(r"(\d{4}-\d{1,2}-\d{1,2})_(\d{2}-\d{2}-\d{2}).*\.(\d )", r"\1 \2 \3")
我收到此錯誤,&: 'str' 和 'int' 的運算元型別不受支持。
誰能告訴我我做錯了什么?
uj5u.com熱心網友回復:
使用str.replace和添加.*-洗掉字串,如Machine02-:
df['filename'] = df['filename'].str.replace(r".*-(\d{4}-\d{1,2}-\d{1,2})_(\d{2}-\d{2}-\d{2}).*\.(\d )", r"\1 \2 \3")
print(df)
# Output
filename
0 2022-01-28 00-21-45 424
1 2022-01-28 00-21-45 425
2 2022-01-28 00-21-45 426
3 2022-01-28 00-21-45 427
4 2022-01-28 00-21-45 428
uj5u.com熱心網友回復:
請試試這個:
df['filename'] = df['filename'].str.split('-',1).apply(lambda x:' '.join(x[1].split('_')).replace('.blf.',' '))
uj5u.com熱心網友回復:
使用替換
df['filename']=df['filename'].str.replace('Machine|\.blf\.',' ',regex=True).str.strip().str.replace('^\d \-','',regex=True)
filename
0 2022-01-28_00-21-45 424
1 2022-01-28_00-21-45 425
2 2022-01-28_00-21-45 426
3 2022-01-28_00-21-45 427
4 2022-01-28_00-21-45 428
要么
提取 e02 和 .blf 之間的值
df['filename']=df['filename'].str.extract('((?<=[e02])[\w|\-] (?=[.blf]))')
filename
0 02-2022-01-28_00-21-45
1 02-2022-01-28_00-21-45
2 02-2022-01-28_00-21-45
3 02-2022-01-28_00-21-45
4 02-2022-01-28_00-21-45
uj5u.com熱心網友回復:
正則運算式很好,但如果引數永遠不會改變,有時更容易進行替換并且更具可讀性:
df['filename'] = df['filename'].str.replace('Machine02-','',regex=False)
df['filename'] = df['filename'].str.replace('.blf.',' ',regex=False)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/448803.html
