Pandas 中的多索引旋转
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/28225465/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-13 22:53:45 来源:igfitidea点击:
Multi-index pivoting in Pandas
提问by Amelio Vazquez-Reina
Consider the following dataframe:
考虑以下数据框:
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
When I try with:
当我尝试:
df.pivot(index=['item_id', 'hour', 'date'], columns='when', values='quanty')
I get:
我得到:
ValueError: Wrong number of items passed 8143, placement implies 3
Why?
为什么?
回答by aus_lacy
If I understand what you are asking I think what you want is pandas.pivot_table(...)which you can use like so:
如果我明白你在问什么,我认为你想要的是pandas.pivot_table(...)你可以像这样使用的:
table = pd.pivot_table(df, index=['item_id', 'hour', 'date'], columns='when', values='quantity')
which with a sample data frame of
其中有一个样本数据框
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
produces
产生
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

