【发布时间】:2019-01-13 17:08:21
【问题描述】:
我有一个形状如下的数据框:
PX_LAST PX_OPEN PX_CLOSE ticker source timestamp
0 1 2 3 A LSE 20180101
1 4 5 6 A LSE 20180102
1 7 8 9 B LSE 20180101
1 10 11 12 B LSE 20180102
....
我想把它按摩成以下格式:
A B
LSE LSE
PX_LAST, PX_CLOSE, PX_OPEN PX_LAST, PX_CLOSE, PX_OPEN
timestamp
20180101 1 2 3 7 8 9
20180102 4 5 6 10 11 12
....
我尝试首先使用set_index 将代码和源列设置为行索引,然后使用unstack 将它们推到列轴上,这似乎确实有效
df.set_index(['timestamp', 'ticker', 'source'])
.unstack(level=[1,2])
.swaplevel(0,1,axis=1)
.swaplevel(1,2,axis=1)
这可以解决问题,但有两个问题:1) 它非常冗长,我们需要执行所有交换级别调用才能将列调整为正确的形状。 2)它似乎没有做我希望的分组,即我得到的结果是这样的:
LSE LSE LSE LSE ...
PX_LAST PX_LAST PX_CLOSE PX_CLOSE ...
timestamp
20180101 1 7 2 8 ...
20180102 4 8 5 11 ...
有没有更简洁的方法可以让我得到我想要的格式?
【问题讨论】:
标签: python pandas dataframe pivot pivot-table