我很抱歉,如果這是一個簡單的問題,但我有不同的時間格式csv檔案,如下所示:
hh:mm和hh:mm:ss
該檔案的摘錄如下所示:
column_name
00:00:00
01:00:00
05:00
02:00:00
03:00:00
06:00
...
23:00:00
00:00:00
我有以下正則運算式來匹配所有這些時間
[0-9]{2}[:][0-9]{2}[:][0-9]{2}
我的問題是如何去掉格式的冒號和秒 ( :ss)hh:mm:ss但保持hh:mm格式不變。本質上只將其中一種格式從 更改為
hh:mm:ss,hh:mm以便它們都hh:mm采用 python 腳本中的格式?
我嘗試使用這一行:
df['column_name'] = [re.sub(r'[0-9]{2}[:][0-9]{2}[:][0-9]{2}', r'[0-9]{2}[:][0-9]{2}', str(x)) for x in df['column_name']]
但這一切都變了 [0-9]{2}[:][0-9]{2}
我也試過只使用切片,[:-3]但我無法讓它作業:
df['column_name'] = [re.sub(r'[0-9]{2}[:][0-9]{2}[:][0-9]{2}', [:-3], str(x)) for x in df['column_name']]
任何幫助將不勝感激,謝謝
編輯
我以前認為@RJ Adriaansen 的答案是正確的,但經過仔細檢查,它也更改了hh:mm需要保持不變的格式,這意味著它必須使用正則運算式,因此 @Haleemur Ali 的答案是為我解決的。
uj5u.com熱心網友回復:
您可以使用str對字串進行切片:
df['column_name'] = df['column_name'].str[:-3]
或者:
df['column_name'] = df['column_name'].str.rsplit(':', 1).str[0]
uj5u.com熱心網友回復:
如果您想使用正則運算式來解決這個問題,請使用捕獲組:
df.column_name.str.replace(r'(\d{2}):(\d{2}):(\d{2})', r'\1:\2', regex=True)
要定義捕獲組,請將其括在括號中。然后,您可以使用組索引(從 1 開始)參考捕獲的字串。
此外,重要的是要注意,由于組被稱為\<group-number>,因此需要使用原始正則運算式字串。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/362736.html
下一篇:根據另一列的值查找列中的常用詞
