Pandas 中的多索引旋转
问题描述
考虑以下数据框:
item_id hour when date quantity
110 0YrKNYeEoa 1 before 2015-01-26 247286
111 0UMNiXI7op 1 before 2015-01-26 602001
112 0QBtIMN3AH 1 before 2015-01-26 981630
113 0GuKXLiWyV 1 after 2015-01-26 2203913
114 0SoFbjvXTs 1 after 2015-01-26 660183
115 0UkT257SXj 1 before 2015-01-26 689332
116 0RPjXnkiGx 1 after 2015-01-26 283090
117 0FhJ9RGsLT 1 before 2015-01-26 2024256
118 0FhGJ4MFlg 1 before 2015-01-26 74524
119 0FQhHZRXhB 1 before 2015-01-26 0
120 0FsSdJQlTB 1 before 2015-01-26 0
121 0FrrAzTFHE 1 before 2015-01-26 0
122 0FfkgBdMHi 1 before 2015-01-26 0
123 0FOnJNexRn 1 before 2015-01-26 0
124 0FcWhIdBds 1 before 2015-01-26 0
125 0F2lr0cL9t 1 before 2015-01-26 1787659
我想旋转它以使表格排列为:
I would like to pivot it to get the table arranged as:
Index before after
(item_id, hour, date) quantityB quantityA
当我尝试:
df.pivot(index=['item_id', 'hour', 'date'], columns='when', values='quanty')
我明白了:
ValueError: Wrong number of items passed 8143, placement implies 3
为什么?
解决方案
如果我明白你在问什么,我想你想要的是 pandas.pivot_table(...)
,你可以像这样使用所以:
If I understand what you are asking I think what you want is pandas.pivot_table(...)
which you can use like so:
table = pd.pivot_table(df, index=['item_id', 'hour', 'date'], columns='when', values='quantity')
其中有一个样本数据框
item_id hour when date quantity
0 a 1 before 2015-01-26 25
1 b 1 before 2015-01-26 14
2 a 1 after 2015-01-26 4
3 d 1 before 2015-01-26 43
4 b 1 after 2015-01-26 30
5 d 1 after 2015-01-26 12
生产
when after before
item_id hour date
a 1 2015-01-26 4 25
b 1 2015-01-26 30 14
d 1 2015-01-26 12 43
相关文章