Tôi có một dataframe với nhiều cấp độ, ví dụ:Pandas: có được mức multiindex như loạt
idx = pd.MultiIndex.from_product((['foo', 'bar'], ['one', 'five', 'three' 'four']),
names=['first', 'second'])
df = pd.DataFrame({'A': [np.nan, 12, np.nan, 11, 16, 12, 11, np.nan]}, index=idx).dropna().astype(int)
A
first second
foo five 12
four 11
bar one 16
five 12
three 11
Tôi muốn tạo một cột mới bằng mức chỉ số tiêu đề second
, vì vậy mà tôi có được
A B
first second
foo five 12 five
four 11 four
bar one 16 one
five 12 five
three 11 three
Tôi có thể thực hiện việc này bằng cách đặt lại chỉ mục, sao chép cột, sau đó áp dụng lại, nhưng điều đó có vẻ như vòng quanh.
Tôi đã thử df.index.levels[1]
, nhưng điều đó tạo ra một danh sách được sắp xếp, nó không giữ được thứ tự.
Nếu đó là một chỉ mục duy nhất, tôi sẽ sử dụng df.index
nhưng trong một multiindex tạo cột cột.
Nếu điều này được giải quyết ở nơi khác, vui lòng chia sẻ vì tôi chưa có bất kỳ may mắn nào tìm kiếm kho lưu trữ stackoverflow.
có thể thực hiện theo tên chỉ mục? –
Có. 'df.index.get_level_values (level = 'second')' cũng hoạt động. – Alexander
Bạn có thể làm tương tự nếu multiindex vượt qua các cột thay vì chỉ mục bằng cách sử dụng 'df.columns.get_level_values (level = 1)'. –