python批量处理excel数据、批量透视、合并透视表
### t+21
import pandas as pd
import os
#半自动———
#——<创建好格式文件夹
#——<数据下载至文件夹
#——<修改date
#——<运行
##直播时间
date='4.21'
#读取存放文件路径
read_path = 'E:/test/t+21/'+date+'/1原始数据'
path_list = os.listdir(read_path)
pathdir = ''
write_path='E:/test/t+21/'+date+'/2透视表'
list_total = list()
#result_df =list()
#循环依次读取文件处理
for i in path_list :
i_name = i.replace('.xls','')
pathdir = read_path +'/'+i
df = pd.read_excel(pathdir,sheet_name='sheet1')
df['商品ID'] = df['商品ID'].astype("str")
#删除不相关的列
df2 = df.drop(labels=['下单时间', '发货时间', '是否发货', '收货时间', '订单编号', \
'订单类型', '预估收入(元)', '计佣金额', '分成比例',\
'技术服务费(元)', '出让比率', '出让金额','订单状态', '推广位', '商家Id', '商家昵称', '付款时间', '结算时间',\
'结算金额(元)', '商品数量', '订单金额(元)'],axis=1)
#print(df2.columns)
#根据商品ID去重
df3 = df2.drop_duplicates(subset=['商品ID'], keep='first', inplace=False)
df3['商品ID'] = df3['商品ID'].astype("str")
#插入一列主播名字
#主播名字后面跟了场次的需要手动去掉
df3.insert(0,'name',i_name,allow_duplicates=False)
#print(count_1)
#本月直播带货场次
df3.insert(1,'本月直播带货场次','',allow_duplicates=False)
#序号
#count_1 = df3.shape[0]+1
#list1 = range(1,count_1)
df3.insert(2,'序号','',allow_duplicates=False)
#print(df3)
#本场带货类型
#名字后面跟了场次需要用手动修改
#print(i_name2)
name_list2=['艾雪','上官彩凤','周兰','稀饭','白洁','张家辉']
if i_name in name_list2:
df3.insert(3,'本场带货类型','垂类挂车',allow_duplicates=False)
else:
df3.insert(3,'本场带货类型','挂车',allow_duplicates=False)
df3.insert(7,'订单金额(元)','',allow_duplicates=False)
df3.insert(8,'商品数量(计数)','',allow_duplicates=False)
print(df3.shape)
df.insert(10,'商品数量(计数)',1,allow_duplicates=True)
df4 = df.pivot_table(index='商品ID',values=['商品数量(计数)','订单金额(元)']\
,aggfunc={'订单金额(元)':sum,'商品数量(计数)':sum})
#print(df4)
list_df5 = list()
for index,row in df4.iterrows():
#index:商品名称
#row[1]:订单金额(元)
#row[0]:商品数量
for index2,row2 in df3.iterrows():
#row2[5]:商品名称
#print(index)
#row2[4]:商品ID
if index == row2[4]:
#df3['订单金额(元)'] = row[1]
#df3['商品数量'] = row[0]
#
#print(index,',',row[0],',',row[1])
#print(len(row2))
#print(row2[4])
row2['订单金额(元)']=row[1]
row2['商品数量(计数)'] = row[0]
list_df5.append(row2)
#print(row2[5])
#print(df3)
#print(list_df)
df5 =pd.DataFrame(list_df5)
#print(data_df)
#保存
df6 = df.drop(df[df['订单状态']=='已失效'].index)
df6 = df6.pivot_table(index ='商品ID',values=['商品数量(计数)','订单金额(元)']\
,aggfunc={'订单金额(元)':sum,'商品数量(计数)':sum})
df5.insert(9,'t+1订单金额(元)','',allow_duplicates=False)
df5.insert(10,'t+1商品数量','',allow_duplicates=False)
list_df7 = list()
for index,row in df5.iterrows():
#row[5]:商品名称
#row[4]:商品ID
#print(row[5])
for index2,row2 in df6.iterrows():
#row2[0]:商品数量
#row2[1]:订单金额(元)
#index2:商品
#print(row[4])
#print(index2)
#print('___________')
if index2 == row[4]:
row['t+1订单金额(元)'] = row2[1]
row['t+1商品数量'] = row2[0]
list_df7.append(row)
#print(list_df7)
df7 = pd.DataFrame(list_df7)
count_1 = df7.shape[0]+1
list1 = range(1,count_1)
df7.insert(2,'序号',list1,allow_duplicates=True)
list_total.append(df7)
result_df = pd.concat(list_total,axis=0,join='outer')
w_path1 =write_path+"/"+i+date+'.xlsx'
w_path2 = w_path1.replace('.xls','',1)
writer = pd.ExcelWriter(w_path2)
df7.to_excel(writer,sheet_name='Sheet1')
path_result = 'E:/test/t+21/'+date+'/'+'t+1总表'+date+'.xlsx'
result_df.to_excel(path_result,sheet_name='Sheet1')
writer.save()
writer.close()
print('结束')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异