参考https://www.cnblogs.com/traditional/p/11967360.html
主要是希望将这样的数据
变成下面这样子
查看资料后
做法如下
# new_poems = pd.read_excel(file_path, engine='openpyxl', sheet_name='人-诗',dtype=str) # new_poems = new_poems.set_index(["朝代", "姓名"])#设置不动的列为索引 # s = new_poems.stack()#打开 # s = s.reset_index(drop=True, level=-1)#删除索引,即删除末尾一级(最高一级的)的索引 # df = s.reset_index()#对前面的索引进行重置并自动进行笛卡尔积 # df = df.rename(columns={0: "诗文"})
也就是说:
先设置按兵不动的列set_index([列名1,列名2])
然后stack()
然后重置索引,并且drop索引,删除最高一级的索引
最后再来一遍reset_index
关于set和reset_index的区别见: