2013-04-01 13 views
15

Tôi có một bảng dữ liệu được nhập từ tệp CSV vào DataFrame.Dãy Python - Cột ngày thành chỉ mục cột

Các dữ liệu chứa khoảng 10 lĩnh vực phân loại, tháng 1 cột (ở định dạng thời gian ngày) và phần còn lại là hàng loạt dữ liệu.

Làm thế nào để chuyển đổi các cột ngày vào một chỉ số trên trục cột?

+1

[read_csv] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.parsers.read_csv.html) thực hiện điều này bằng cách riêng của mình nếu bạn gọi hàm với 'index_col' và' parse_dates = True' –

Trả lời

22

Bạn có thể sử dụng set_index:

df.set_index('month') 

Ví dụ:

In [1]: df = pd.DataFrame([[1, datetime(2011,1,1)], [2, datetime(2011,1,2)]], columns=['a', 'b']) 

In [2]: df 
Out[2]: 
    a     b 
0 1 2011-01-01 00:00:00 
1 2 2011-01-02 00:00:00 

In [3]: df.set_index('b') 
Out[3]: 
      a 
b    
2011-01-01 1 
2011-01-02 2 
+0

Cảm ơn Andy Tôi có thể đặt chỉ mục sao cho ngày đó nằm dọc trục kia không? Nhóm này có các giá trị không? – MrHopko

+1

Bạn có thể đưa ra một ví dụ DataFrame mà bạn có và những gì bạn muốn? Tôi không chắc làm thế nào nó làm cho tinh thần để làm cho một cột ngày một chỉ số cột ... Nó sẽ không nhóm các giá trị, điều này làm cho một cột chỉ số. :) –

+0

Tôi muốn dữ liệu được sắp xếp sao cho mỗi cột đại diện cho 1 tháng. Mỗi hàng trong bảng biểu thị một chuỗi thời gian khác nhau. Điều đó có ý nghĩa? Tôi sẽ chứng minh với một bảng nhưng tôi không có ý tưởng làm thế nào để chèn một bảng trên trang web này. – MrHopko

4

Tôi có vấn đề tương tự như tôi vừa giải quyết bằng cách reset_index. Nhưng bạn có thể sử dụng một trong hai set_index hoặc reset_index:

ind_df=df.set_index(['A', 'B'])

df.reset_index(level=0, inplace=True) 
3

Nếu bạn không biết tên của cột ngày trước thời hạn và cần phải thiết lập các chỉ số tự động dựa trên cột chuỗi thời gian trong dữ liệu

df.set_index((df.select_dtypes(include=[np.datetime64]).columns).tolist())