2016-04-08 9 views
1

yılında DateTimeIndex oluşturun.ilk kez</p> <p>ben ayrılmış sütunlarda yıl, ay, gün ve saat içeren bir dataframe var için panda kullanarak zorlanıyorum Pandalar

Bildiğim kadarıyla bu veri dizisi endekslenmemiş.

Bu dataframe bir tarih saat endeksi oluşturmaya çalışıyorum: Yanlış

def createTimeStamp(year, month, day, hour): 
    return DatetimeIndex(datetime(.........)) 

df['TimeStamp'] = df.apply(createTimeStamp(df['year'], df['month'], df['day'], df['hour'])) 

df.set_index('TimeStamp') 

yapıyorum?

cevap

2
import datetime as dt 
import pandas as pd 

df = pd.DataFrame({'year': [2015, 2016], 
        'month': [12, 1], 
        'day': [31, 1], 
        'hour': [23, 1]}) 

# returns datetime objects 
df['Timestamp'] = df.apply(lambda row: dt.datetime(row.year, row.month, row.day, row.hour), 
          axis=1) 

# converts to pandas timestamps if desired 
df['Timestamp'] = pd.to_datetime(df.Timestamp) 

>>> df 
    day hour month year   Timestamp 
0 31 23  12 2015 2015-12-31 23:00:00 
1 1  1  1 2016 2016-01-01 01:00:00 

# Create a DatetimeIndex and assign it to the dataframe. 
df.index = pd.DatetimeIndex(df.Timestamp) 

>>> df 
        day hour month year   Timestamp 
2015-12-31 23:00:00 31 23  12 2015 2015-12-31 23:00:00 
2016-01-01 01:00:00 1  1  1 2016 2016-01-01 01:00:00 
+0

gayet çalıştı eğer! – guilhermecgs

2

Sorun, set_index'in DataFrame'in bir kopyasını değiştirmesidir. Inplace = true değerine set_index gönderirseniz, orijinal DataFrame güncellenir. Alternatif DataFrame yeniden atanabilir fazla operasyonlar

df.set_index('TimeStamp', inplace=True)
veya
gerekli df = df.set_index('TimeStamp')

+0

set_index yorum bu soruyla ilgiliydi – guilhermecgs