python – pandas str.replace什么都没得到

我运行一个程序:

# 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
点赞