Pandas删除字符串的一部分

时间:2017-06-08 05:38:03

标签: python pandas

>>> 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

我想知道我在这里做错了什么。

1 个答案:

答案 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