2017-04-10 15 views
1

時間と分で構成される4桁の文字列形式の時間があります。 例えば、1608および=に変換する必要が> 16:084桁の数字を時間に変換する方法:パンダの分の時間形式

データがパンダデータフレームの形態であり、Iが試み:

 A st_time 
1 23 1608 
2 12 1635 
3 18 1654 
4 38 1705 

私が使用してみました:

df.st_time.to_datetime().strftime('%h-%m') 

ただし、エラーが発生します。

AttributeError: 'Series' object has no attribute 'to_datetime' 

答えて

3

最初のキャスト数値indexing with str文字列にしてから使用してください。

df.st_time = df.st_time.astype(str) 
df.st_time = df.st_time.str[:2] + ':' + df.st_time.str[-2:] 
print (df) 
    A st_time 
1 23 16:08 
2 12 16:35 
3 18 16:54 
4 38 17:05 
+0

解決策には何らかの問題がありますか? – jezrael

+0

35:16ここの時間は分の場所を取った! –

+0

'35:16'の出力は何ですか? – jezrael

3

は、あなたはそれに直列df.st_timeを渡すことによって、pd.to_datetimeを使用する必要があります。これを実行すると、timeコンポーネントにアクセスできます。

df.assign(newtime=pd.to_datetime(df.st_time, format='%H%M').dt.time) 

    A st_time newtime 
1 23  1608 16:08:00 
2 12  1635 16:35:00 
3 18  1654 16:54:00 
4 38  1705 17:05:00 

ただし、指定した形式の文字列を戻したい場合は、

df.assign(newtime=pd.to_datetime(df.st_time, format='%H%M').dt.strftime('%H:%M')) 

    A st_time newtime 
1 23  1608 16:08 
2 12  1635 16:35 
3 18  1654 16:54 
4 38  1705 17:05 
+0

小さなデータフレームで動作しましたが、私のデータフレームは17mの行を持つので、それを実行しようとするたびにフリーズします。 –

関連する問題