我有下表:
| 索引|第一天|第二天|第三天|
| - -----|- -----|- -----|- -----|
| 0|- -一种|星期一|星期二|
| 一个|星期五|星期六|星期天|
| 2|星期天|星期一|- -一种|
| 三个|星期二|星期三|- -一种|
| 4|星期四|星期五|星期六|
我现在要做的是切换列标题,使用它们作为值,并使用唯一的单元格值作为新的列标题。这应该会产生一个像这样的稀疏表:
| 索引|- -一种|星期一|星期二|星期三|星期四|星期五|星期六|星期天|
| - -----|- -----|- -----|- -----|- -----|- -----|- -----|- -----|- -----|
| 0|第一天|第二天|第三天|- -----|- -----|- -----|- -----|- -----|
| 一个|- -----|- -----|- -----|- -----|- -----|第一天|第二天|第三天|
| 2|第二天|- -一种|- -----|- -----|- -----|- -----|- -----|第一天|
| 三个|...||||||||
| 4|...||||||||
有人能帮我做到这一点吗?
我试过了:df. pivot_table(index = df. index,columns = df. values,values = df. columns)
但没成功。
1条答案
按热度按时间tpgth1q71#
你的想法是正确的,但在旋转之前需要更多的操作:
1.这将索引设置为
Index
,然后进行堆栈,这样您就有了一个包含Index和First/Second/Third Days的MultiIndex。1.重置索引会将这些列放回原来的位置(因此现在有3列索引,Days和day of the week。
1.然后你就可以用这些柱子来旋转了。
1.最后,将值按工作日顺序排序。
编辑:
ValueError: Index contains duplicate entries, cannot reshape.
* 的替代解决方案您可以尝试使用
groupby
和unstack
而不是pivot
,以消除此错误: