>>> df
Time
5/10/2017 (135) 01:05:03
5/11/2017 (136) 04:05:06
在DataFrame中给出如此输入日期,如何删除Julian Date,(135)和(136),并删除中间的空白,以便输出如下:
>>> df
Time
5/10/2017 01:05:03
5/11/2017 04:05:06
我试过了:
df['Time'].replace('(135)','', regex=True, inplace=True)
输出:
>>> df
Time
0 5/10/2017 () 01:05:03
我想知道我在这里做错了什么。
答案 0 :(得分:3)
您可以使用正则表达式replace
:
首先需要()
转义\
因为正则表达式中的特殊字符,然后按\d+
匹配所有整数,并且)
之后的\s*
最后匹配零个或多个空格}}
df['Time'] = df['Time'].str.replace("\(\d+\)\s*", '')
print (df)
Time
0 5/10/2017 01:05:03
1 5/11/2017 04:05:06
如果需要转换为datetime:
df['Time'] = pd.to_datetime(df['Time'].str.replace("\(\d+\)\s*", ''))
print (df)
Time
0 2017-05-10 01:05:03
1 2017-05-11 04:05:06
编辑:
在您的示例中,可以使用转义字符\
,而可以使用\d+
[0-9]+
:
df['Time'].replace('\([0-9]+\)\s*','', regex=True, inplace=True)
print (df)
Time
0 5/10/2017 01:05:03
1 5/11/2017 04:05:06