3. 索引旋转
DataFrame.stack()
方法将数据的列索引旋转为行索引。注意:它跟转置不同,转置会同时旋转数据。DataFrame.stack(level=-1, dropna=True)
level
:一个整数、字符串或者整数字符串的列表。如果列索引为多级索引,它指定了将哪个级别的索引旋转为行索引dropna
:一个布尔值。如果为True
,则如果结果中某行全为NaN
,则抛弃该行。
与
DataFrame.stack()
对应的就是DataFrame.unstack()
方法。它将数据的行索引转换为列索引。注意:它跟转置不同,转置会同时旋转数据。DataFrame.unstack(level=-1, fill_value=None)
level
:一个整数、字符串或者整数字符串的列表。如果行索引为多级索引,它指定了将哪个级别的索引旋转为列索引fill_value
:一个标量。如果结果中有NaN
,则使用fill_value
替换。
旋转时,比如列索引旋转为行索引,则新的行索引是个多级索引,最内层的一级就是原来的列索引。
DataFrame.pivot()
方法重排数据。它是一个快捷方式,它使用set_index
将列数据变成行索引,然后使用unstack
将行索引转为列索引。DataFrame.pivot(index=None, columns=None, values=None)
index
:一个字符串。指定了一个column name
,用该列数据来set_index
(将该列数据变成行索引,删除了原来的旧的行索引)。如果为None
,则不执行set_index
columns
:一个字符串,指定了哪个列数据作为结果的columns labels
。实际上对 index,clumns 指定的列数据均 set_index,然后仅对 columns 对应的列数据 unstack
values
:一个字符串,指定了哪个列数据作为结果的数据。如果未提供,则剩余的所有列都将作为结果的数据。