2017-07-14 19 views
1

私は時間の列を持つ分のデータを持っています。私はちょうどhoursと日付の書式で新しい列を作成したい、例えばformat ='%Y-%m-%d %H:%M:%S'。私はまた、多くのスレッドがあることを承知しています私はこれを行うと、私は(私は必要がある)、次のような出力を得る時間系列データを1つの行(PythonicWay)で時間間隔に分割 -

value$hour<- cut(as.POSIXct(paste(value$time), 
          format="%Y-%m-%d %H:%M:%S"), breaks="hour") 

、私たちは何かなどを使用することができ、Rで

time     hour 
2017-02-10 00:00:00 2017-02-10 00:00:00 
2017-02-10 00:01:00 2017-02-10 00:00:00 
2017-02-10 00:02:00 2017-02-10 00:00:00 
2017-02-10 00:03:00 2017-02-10 00:00:00 
.... 
2017-12-1 10:05:00 2017-12-01 10:00:00 
2017-12-1 10:06:00 2017-12-01 10:00:00 

を知っていますそれは

value['date'] = value['time'].dt.date 
value['hour'] = value['time'].dt.hour 

は、私がabov述べたようにRに類似しているPythonで行うことができますどのような方法があり、およそdt.datedt.hourなど私はこのようなPythonで次の操作を行うことができますについて説明します1行で? ご迷惑をおかけして申し訳ございません。前もって感謝します!あなたがdt.floorが必要

答えて

2

df['hour'] = df['time'].dt.floor('H') 
print (df) 
       time    hour 
0 2017-02-10 00:00:00 2017-02-10 00:00:00 
1 2017-02-10 00:01:00 2017-02-10 00:00:00 
2 2017-02-10 00:02:00 2017-02-10 00:00:00 
3 2017-02-10 00:03:00 2017-02-10 00:00:00 
4 2017-12-01 10:05:00 2017-12-01 10:00:00 
5 2017-12-01 10:06:00 2017-12-01 10:00:00 

datetimetimeに変換する必要がある場合には、to_datetimeを追加します。あなたが `DF [ '時間']持っているよう

df['hour'] = pd.to_datetime(df['time']).dt.floor('H') 
print (df) 
        time    hour 
0 2017-02-10 00:00:00 2017-02-10 00:00:00 
1 2017-02-10 00:01:00 2017-02-10 00:00:00 
2 2017-02-10 00:02:00 2017-02-10 00:00:00 
3 2017-02-10 00:03:00 2017-02-10 00:00:00 
4 2017-12-1 10:05:00 2017-12-01 10:00:00 
5 2017-12-1 10:06:00 2017-12-01 10:00:00 
+0

は、ありがとうdt.floor(」 H ') '私はすでに' df [' time '] 'を' pd.to_datetime'に変換したので、このトリックを行います。しかし、私の新しい列 'hour'は、日付と欠落した' 00:00:00'部分しか表示しません。どんな考え? –

+2

はい、パンダでは、すべての値が「00:00:00」の場合は表示されません。しかし、 'print(df.loc [0、 'time'])の値をチェックすると、ゼロも欠落してしまいます。 – jezrael

+2

完璧で、あなたは 'print(df.loc [0、 'hour'])'という意味ですか?これは完璧、素晴らしい、ありがとう! –

関連する問題