2017-06-08 25 views
0
>>> df 
         Time 
    5/10/2017 (135) 01:05:03 
    5/11/2017 (136) 04:05:06 

給定一個輸入日期,如這在一個DataFrame中,我將如何刪除朱利安日期,(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 

我想知道我在這裏做錯了什麼。

回答

2

您可以通過正則表達式使用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 

編輯:

在你的樣品是mising逃逸字符\和可能使用,而不是\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 
+0

太棒了,有效!你能描述一下str.replace()中的反斜槓和d +值以及它們是如何使用的,或者如果有關於如何使用該輸入的文檔?謝謝! –

+0

不幸的是,正則表達式的問題是非常巨大的,在熊貓文檔只是一些樣本[這裏](http://pandas.pydata.org/pandas-docs/stable/text.html#extract-first-match-in-each-subject -extract) - 它是關於提取,但與'str.replace'類似的作品。 – jezrael

+0

精彩,歡呼。 –