Tôi đang cố gắng tìm ra nếu có một cách để đổi tên các cột Pandas khi bạn cố gắng thiết lập lại chỉ mục. Tôi thấy trong tài liệu mà bạn có thể sử dụng tham số "name" để đặt tên cột của chỉ mục đặt lại nếu chỉ có một cột, nhưng tôi tò mò nếu có cách để làm điều này cho nhiều cột.Làm thế nào để đổi tên nhiều cột trên một chỉ số thiết lập lại với gấu trúc
Ví dụ:
df1 = pd.DataFrame({
'A' : ['a1', 'a1', 'a2', 'a3'],
'B' : ['b1', 'b2', 'b3', 'b4'],
'D1' : [1,0,0,0],
'D2' : [0,1,1,0],
'D3' : [0,0,1,1],
})
df1.set_index(['B','A']).stack().reset_index()
Kết quả lá bạn với:
Out[82]:
B A level_2 0
0 b1 a1 D1 1
1 b1 a1 D2 0
2 b1 a1 D3 0
3 b2 a1 D1 0
4 b2 a1 D2 1
Bạn có thể làm:
df1.set_index(['B','A']).stack().reset_index(name='my_col')
Để thiết lập tên của cột cuối cùng nhưng tôi Tôi tự hỏi nếu có một cách để sử dụng tham số để đặt tên của cột 'level_2' là tốt.
Điều đầu tiên mà đến tâm trí của tôi là để thử:
df1.set_index(['B','A']).stack().reset_index(name=['my_col2','my_col'])
Tuy nhiên, điều đó không làm việc để tìm kiếm một cách khác xung quanh. Tôi nhận ra rằng tôi luôn có thể đổi tên các cột trong dòng tiếp theo nhưng hy vọng sẽ có một cách rõ ràng hơn để làm điều đó trong một dòng.
Cảm ơn! Sam
Tôi không nghĩ rằng nó có thể, bạn sẽ thấy, 'reset_index()' trong mã của bạn là thực sự http://pandas.pydata.org/pandas-docs/stable /generated/pandas.Series.reset_index.html, vì vậy bạn chỉ có một cột. Những gì bạn có thể làm là đặt tên của các cột của chỉ mục trong chuỗi của bạn và sau đó chúng sẽ vẫn là tên của các cột của DataFrame –