2016-11-26 22 views
9

için endeksini dönüştürmekpiton pandalar i datetime biçimine dizeleri bir pandalar endeksi dönüştürmek nasıl datetime

benim dataframe 'df' bu

     value   
2015-09-25 00:46 71.925000 
2015-09-25 00:47 71.625000 
2015-09-25 00:48 71.333333 
2015-09-25 00:49 64.571429 
2015-09-25 00:50 72.285714 

gibidir ama endeks dize türünde olmakla ı i hatayı

'Index' object has no attribute 'hour' 

olsun, çünkü

df['A'] = df.index.hour 
kullanırken bunu bir datetime biçimi gerek
+0

'df.index.to_datetime() 'ya da' df.index = pandas.to_datetime (df.index)' (eski artık uygun bulunmamaktadır). – AChampion

+0

type (df.index [1]) hala 'str' değerini döndürür –

+0

Yukarıdaki veriler, 'datetime' no problemine dönüştürür - tür (df.index [1]) == pandas.tslib.Timestamp'. Veritabanının geri kalanında kötü verileriniz var mı? – AChampion

cevap

18

Beklendiği gibi çalışması gerekir. Aşağıdaki örneği çalıştırmayı deneyin.

import pandas as pd 
import io 

data = """value   
"2015-09-25 00:46" 71.925000 
"2015-09-25 00:47" 71.625000 
"2015-09-25 00:48" 71.333333 
"2015-09-25 00:49" 64.571429 
"2015-09-25 00:50" 72.285714""" 

df = pd.read_table(io.StringIO(data), delim_whitespace=True) 

# Converting the index as date 
df.index = pd.to_datetime(df.index) 

# Extracting hour & minute 
df['A'] = df.index.hour 
df['B'] = df.index.minute 
df 

#       value A B 
# 2015-09-25 00:46:00 71.925000 0 46 
# 2015-09-25 00:47:00 71.625000 0 47 
# 2015-09-25 00:48:00 71.333333 0 48 
# 2015-09-25 00:49:00 64.571429 0 49 
# 2015-09-25 00:50:00 72.285714 0 50