我有一张表,其中A列的格式为'12:30:45'。我想创建一个B列,我只在A列的第一个冒号之后得到数字。
您如何在python上使用正则表达式仅提取第一个冒号之后的数字,以便最后得到':30:45'?
我见过正则表达式用于提取数字,字符串,在空格之间分割的值,但是在冒号之后找不到用于提取的正则表达式。
我是regex的新手,任何建议将不胜感激。
答案 0 :(得分:1)
使用.str.split
将拆分次数限制为n=1
。
print(df)
time
0 12:30:45
1 12:30
2 12312
3 1:123:123123:123123
df.time.str.split(':', n=1).str[1]
#0 30:45
#1 30
#2 NaN
#3 123:123123:123123
#Name: time, dtype: object
如果您真的需要前导分号':'+df.time.str.split(':', n=1).str[1]'
。
答案 1 :(得分:1)
您可以将Series.str.extract
与regex
结合使用来获得:
,包括:
# Print reproducable example dataframe
df = pd.DataFrame({'A':['12:30:45', '10:44:09', '8888']})
print(df)
A
0 12:30:45
1 10:44:09
2 8888
df['A'] = df['A'].str.extract('^[^:]*(:.*)$')
print(df)
A
0 :30:45
1 :44:09
2 NaN
如果您要保留没有:
的数字,以致没有得到NaN
,请使用正则表达式后备{{1} },您可以将其读取为:|.*
:
or all