总结:

1.stack:  将数据的列索引转换为行索引(列索引可以简单理解为列名)
2.unstack:将数据的行索引转换为列索引
3.stack和unstack默认操作为最内层,可以用level参数指定操作层.
4.stack和unstack默认旋转轴的级别将会成果结果中的最低级别(最内层)
5.stack转换dataframe时,若只有一层列索引则转换后的类型为series,否则为dataframe

unstack转换dataframe时,若只有一层行索引,情况同上

import pandas as pd

df = pd.DataFrame({ '类别':['水果'] * 3 + ['蔬菜'] * 3 ,
                    '名称':['苹果','','','菠菜','黄瓜','茄子'],
                    '价格':[7,8,9,10,11,12]})
print(df)
print(df.stack())
# 如下实现了行索引是类别,列索引是名称,交点处是价格
df.set_index(['类别','名称'], inplace=True)
print(df.unstack())
#    类别  名称  价格
# 0  水果  苹果   7
# 1  水果   梨   8
# 2  水果   杏   9
# 3  蔬菜  菠菜  10
# 4  蔬菜  黄瓜  11
# 5  蔬菜  茄子  12
# 0  类别    水果
#    名称    苹果
#    价格     7
# 1  类别    水果
#    名称     梨
#    价格     8
# 2  类别    水果
#    名称     杏
#    价格     9
# 3  类别    蔬菜
#    名称    菠菜
#    价格    10
# 4  类别    蔬菜
#    名称    黄瓜
#    价格    11
# 5  类别    蔬菜
#    名称    茄子
#    价格    12
# dtype: object
#      价格
# 名称    杏    梨   苹果    茄子    菠菜    黄瓜
# 类别
# 水果  9.0  8.0  7.0   NaN   NaN   NaN
# 蔬菜  NaN  NaN  NaN  12.0  10.0  11.0
View Code

相关文章:

  • 2021-10-02
  • 2021-07-06
  • 2021-07-10
  • 2022-12-23
  • 2022-12-23
  • 2021-08-29
  • 2021-12-12
  • 2021-05-19
猜你喜欢
  • 2021-04-25
  • 2022-12-23
  • 2021-08-22
  • 2022-12-23
相关资源
相似解决方案