Bạn cần phải unstack bạn mức chỉ số hiện tại Foo
, ngăn xếp cột mong muốn của bạn 'Coo', và sau đó sắp xếp lại các mức chỉ số. Sau khi trao đổi các mức chỉ mục của bạn, bạn có thể muốn sắp xếp nó. Như một liên lạc cuối cùng, bạn có thể muốn bỏ tên cột của tất cả các giá trị (val
).
df = (pd.DataFrame({'Foo': [124, 124, 134, 134] * 2,
'Bar': [1, 2, 1, 2] * 2,
'Coo': ['BAZ'] * 4 + ['PAL'] * 4,
'val': list('ACEGBDFH')})
.set_index(['Foo', 'Bar', 'Coo'])
.unstack('Coo'))
>>> df
val
Coo BAZ PAL
Foo Bar
124 1 A B
2 C D
134 1 E F
2 G H
df = df.unstack('Foo').stack('Coo')
df.index = df.index.swaplevel(0, 1)
>>> df
val
Foo 124 134
Coo Bar
BAZ 1 A E
PAL 1 B F
BAZ 2 C G
PAL 2 D H
df.sort_index(inplace=True)
>>> df
val
Foo 124 134
Coo Bar
BAZ 1 A E
2 C G
PAL 1 B F
2 D H
df.columns = df.columns.droplevel()
>>> df
Foo 124 134
Coo Bar
BAZ 1 A E
2 C G
PAL 1 B F
2 D H
Cảm ơn bạn. Nó hoàn toàn hoạt động. –
Rất vui khi được giúp đỡ. – Alexander