2015-08-07 24 views
8

Trong dataframe của tôi, thời gian được seprated thành 3 cột year, month, day, như thế này enter image description herePython & Pandas: Kết hợp các cột vào một ngày

Làm thế nào tôi có thể chuyển đổi chúng thành date, vì vậy tôi có thể làm thời gian phân tích seris?

tôi có thể làm điều này:

df.apply(lambda x:'%s %s %s' % (x['year'],x['month'], x['day']),axis=1) 

mà kết quả đầu ra

1095  1954 1 1 
1096  1954 1 2 
1097  1954 1 3 
1098  1954 1 4 
1099  1954 1 5 
1100  1954 1 6 
1101  1954 1 7 
1102  1954 1 8 
1103  1954 1 9 
1104  1954 1 10 
1105  1954 1 11 
1106  1954 1 12 
1107  1954 1 13 

Nhưng những gì sau?

UPDATE: Đây là những gì tôi kết thúc với:

from datetime import datetime 
df['date']= df.apply(lambda x:datetime.strptime("{0} {1} {2}".format(x['year'],x['month'], x['day']), "%Y %m %d"),axis=1) 
df.index= df['date'] 

Trả lời

8

Dưới đây là làm thế nào để chuyển đổi giá trị cho thời gian:

import datetime 


df.apply(lambda x:datetime.strptime("{0} {1} {2} 00:00:00".format(x['year'],x['month'], x['day']), "%Y %m %d %H:%M:%S"),axis=1) 
+0

Nó mang lại cho tôi 'NameError: Tên 'x' không defined' , Có vấn đề gì? – cqcn1991

+0

Nó thiếu biến biểu thức lambda của bạn được sử dụng từ khung dữ liệu. tôi vẫn cảm thấy như thế này là bắt buộc nhưng hãy cho tôi biết nếu nó hoạt động. – FirebladeDan

+0

Tôi nghĩ có lẽ chúng ta nên chuyển đổi thành 'datetime', không phải' time'? – cqcn1991

Các vấn đề liên quan