我有以下数据:
from pandas import Timestamp
values = [['IDX100', 'field1', Timestamp('1999-02-01 05:00:00'), '101'],
['IDX100', 'field1', Timestamp('1999-02-02 05:00:00'), '102'],
['IDX100', 'field1', Timestamp('1999-02-03 05:00:00'), '103'],
['IDX200', 'field1', Timestamp('1999-02-01 05:00:00'), '601'],
['IDX200', 'field1', Timestamp('1999-02-02 05:00:00'), '602'],
['IDX200', 'field1', Timestamp('1999-02-03 05:00:00'), '603'],
['IDX100', 'field2', Timestamp('1999-02-01 05:00:00'), '201'],
['IDX100', 'field2', Timestamp('1999-02-02 05:00:00'), '202'],
['IDX100', 'field2', Timestamp('1999-02-03 05:00:00'), '203'],
['IDX200', 'field2', Timestamp('1999-02-01 05:00:00'), '701'],
['IDX200', 'field2', Timestamp('1999-02-02 05:00:00'), '702'],
['IDX200', 'field2', Timestamp('1999-02-03 05:00:00'), '703'],
['IDX100', 'field3', Timestamp('1999-02-01 05:00:00'), '301'],
['IDX100', 'field3', Timestamp('1999-02-02 05:00:00'), '302'],
['IDX100', 'field3', Timestamp('1999-02-03 05:00:00'), '303'],
['IDX200', 'field3', Timestamp('1999-02-01 05:00:00'), '801'],
['IDX200', 'field3', Timestamp('1999-02-02 05:00:00'), '802'],
['IDX200', 'field3', Timestamp('1999-02-03 05:00:00'), '803']]
df = pd.DataFrame(values, columns = ['identifier', 'code', 'date', 'value'])
在旋转我的框架后,我结束了以下:
df = df.pivot(index=['date'], columns=['identifier', 'code'], values=['value'])
value
identifier IDX100 IDX200 IDX100 IDX200 IDX100 IDX200
code field1 field1 field2 field2 field3 field3
date
1999-02-01 05:00:00 101 601 201 701 301 801
1999-02-02 05:00:00 102 602 202 702 302 802
1999-02-03 05:00:00 103 603 203 703 303 803
但是,我希望输出看起来像这样:
identifier IDX100 IDX200
code field3 field2 field1 field3 field2 field1
date
1999-02-01 05:00:00 301 201 101 801 701 601
1999-02-02 05:00:00 302 202 102 802 702 602
1999-02-03 05:00:00 303 203 103 803 703 603
我可以通过这样做来接近这一点:
df = df.reindex(sorted(df.columns), axis=1)
但这将保持level 2列的顺序为field1、field2、field3.我想要的是能够以不同的方式排序这个级别.最好是根据我提供的名单来确定. 例如,我可能希望将其排序为field 3,field 2,field 1,或field 2,field 1,field 3.
有人能帮我吗?