我运行一个程序:
# encoding=utf-8
import pandas
df=pandas.DataFrame([['11-20','a',1],['10-20 更新于16-10-20 18:07','b',2],['15-12-27','c',3],['15-10-26 更新于10-26 23:52','d',4]],columns=['date','name','type'])
df.date=df.date.str.replace('^(\d+)(-)(\d+)((-)\d+){0,1}(.*)','\1\2\3\4')
print df
这是结果:
date name type
0 a 1
1 b 2
2 c 3
3 d 4
我想得到结果:
date name type
0 11-20 a 1
1 10-20 b 2
2 15-12-27 c 3
3 15-10-26 d 4
我也在https://regex101.com/r/apIT0O/8检查这个正则表达式.但我不知道问题出在哪里
最佳答案 您需要使替换组文字:
df.date.str.replace('^(\d+)(-)(\d+)((-)(\d+)){0,1}(.*)',r'\1\2\3\4')
#0 11-20
#1 10-20
#2 15-12-27
#3 15-10-26
#Name: date, dtype: object
或者你可以使用双反斜杠:
df.date.str.replace('^(\d+)(-)(\d+)((-)(\d+)){0,1}(.*)', '\\1\\2\\3\\4')
如果不使用正则表达式,您还可以拆分空白区域并获取第一个元素:
df.date.str.split(" ").str[0]
#0 11-20
#1 10-20
#2 15-12-27
#3 15-10-26
#Name: date, dtype: object