2012-06-14 30 views
14

làm cách nào để thêm 'd' vào chỉ mục bên dưới mà không phải đặt lại đầu tiên?Pandas DataFrame Thêm cột để lập chỉ mục mà không cần đặt lại

from pandas import DataFrame 
df = DataFrame({'a': range(6), 'b': range(6), 'c': range(6)}) 
df.set_index(['a','b'], inplace=True) 
df['d'] = range(6) 

# how do I set index to 'a b d' without having to reset it first? 
df.reset_index(['a','b','d'], inplace=True) 
df.set_index(['a','b','d'], inplace=True) 

df 

Trả lời

30

Chúng tôi thêm một tùy chọn append để set_index. Hãy thử điều đó.

Lệnh là:

df.set_index(['d'], append=True) 

(chúng tôi không cần phải xác định [ 'a', 'b'], vì họ đã có trong chỉ mục và chúng tôi đang phụ thêm cho họ)

-1

Mã của bạn không hợp lệ, reset_index không có đối số tại chỗ trong phiên bản gấu trúc của tôi (0.8.1). Sau đây đạt được những gì bạn muốn nhưng có lẽ một cách thanh lịch hơn, nhưng bạn đã không cung cấp đủ thông tin về lý do tại sao bạn đang tránh reset_index.

df2.index = MultiIndex.from_tuples([(x,y,df2['d'].values[i]) for i,(x,y) in enumerate(df2.index.values)]) 

HTH

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