2016-10-26 18 views
1

をto_datetime私は、データフレームの日付&時刻データを含む「DTIME」列があります。変換範囲時間データは

01JAN2004 00:00-01:00 
    01JAN2004 01:00-02:00 

を私が使用して解析してみました:

pd.to_datetime(df['DTime'], format='%d%b%Y %H:%M-%H:%M') 

しかし、これは与えます:

error: redefinition of group name 'H' as group 6; was group 4 

私は "-H:M"を削除しようとしましたが、これは '変換されていないデータエラーです。

これを行う方法はありますか?タイムベースを1時間目に設定しますか?

+2

さてあなたは、最終的なDFが、あなたがこの範囲から2つの日付時刻を望んでいるように見えるべきかを決定する必要がありますか?始まりと終わり、またはオープニング時間のみを望みますか? – EdChum

+0

この場合、オープニング時間のみ。 – BenP

答えて

2
df = pd.DataFrame([ 
     '01JAN2004 00:00-01:00', 
     '01JAN2004 01:00-02:00' 
     ], columns=['dstr']) 

date_regex = '(?P<date>\d\d\w{3}\d{4})' 
beg_regex = '(?P<beg_hour>\d\d):(?P<beg_min>\d\d)' 
end_regex = '(?P<end_hour>\d\d):(?P<end_min>\d\d)' 
regex = '{} {}-{}'.format(date_regex, beg_regex, end_regex) 
d1 = df.dstr.str.extract(regex, expand=True) 
for c in ['beg_hour', 'beg_min', 'end_hour', 'end_min']: 
    d1[c] = d1[c].astype(int) 

pd.concat([ 
     pd.to_datetime(d1.date, format='%d%b%Y') + \ 
     pd.to_timedelta(d1.beg_hour, unit='H'), 
     pd.to_datetime(d1.date, format='%d%b%Y') + \ 
     pd.to_timedelta(d1.beg_hour, unit='H') 
    ], axis=1, keys=['Beg', 'End']) 

enter image description here

+0

ありがとう、私はこのような解決策を使用していない/見たことがありません。私は乞食の時間が必要ですが、これは将来的に役立ちます – BenP

関連する問題