stack 修改列名

import  pandas as pd
data = pd.read_excel('C:/Users/ivan/Desktop/工作簿4.xlsx',engine='openpyxl')
data['岳阳库存'].fillna(0,inplace=True) # 缺失值填充为0
# 1.将keys 设置为index索引即 行索引,此时data变为Series.这一步的作用:没有这一步的话,直接进入stack,会将所有的列都变为行索引。
# 其实应该是将['sp','品名','8折采购价',	'补货方式','岳阳库存',	'成都库存','总补货量'] 固定住,然后增加收货仓库这个维度,等同于 melt
data.set_index(inplace=True,keys=['sp','品名','8折采购价',	'补货方式','岳阳库存',	'成都库存','总补货量'])
# 剩下的一列 设置列明
data.rename_axis('收货仓库',axis='columns',inplace=True)
# 列索引变为行索引 即:收货仓库
df = data.stack()
# 将stack得到的索引重置
k = df.reset_index()
# 对列名为:0的列设置列名
k.rename(columns={0:'发货数量'},inplace=True)
k.to_excel('G:/0310/工作簿5.xlsx',index=False)
#

data = data.melt(id_vars=['sp','品名','8折采购价',	'补货方式','岳阳库存',	'成都库存','总补货量'],value_vars=['JM成都空港仓', 'JM成都成龙仓','JM成都光华仓','JM成都东秀仓','JM成都东湖仓'],value_name='收货数量',var_name='收货仓库')
data.to_excel('G:/0310/工作簿6.xlsx',index=False)
posted @ 2023-01-10 00:32  烦恼1234  阅读(30)  评论(0编辑  收藏  举报