首页 > 编程语言 >python批量处理excel数据、批量透视、合并透视表

python批量处理excel数据、批量透视、合并透视表

时间:2023-05-19 17:12:10浏览次数:52  
标签:row2 批量 python 透视 list df3 df print row

### 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('结束')

标签:row2,批量,python,透视,list,df3,df,print,row
From: https://www.cnblogs.com/cjnlll/p/17415782.html

相关文章

  • 使用国内镜像通过pip安装python 包
    pip安装python包时超时或是报错“CannotfetchindexbaseURLhttp://e.pypi.python.org/simple/”解决方法:加上参数"-i http://pypi.v2ex.com/simple",即换成国内镜像。一劳永逸的办法:~/.pip/下创建文件pip.conf(如果还没有的话),并填入以下内容:1[global]2timeout=6......
  • Python 列表append自己
    list=['zz','ss']list.append(list)print(id(list[2]))print(id(list[2][0]))print("1:",list)list.append(list)print(id(list[3]))print(id(list[3][0]))print("2:",list)结果:1404637464558161404637464107361:['z......
  • python使用exchangelib读取、保存exchange邮件
    importosfromdatetimeimportdatetimeimportpytzfromexchangelibimportCredentials,Account,Configuration,DELEGATE,Q,FileAttachmentdefreceived_exchange_message():"""接收exchange邮件,保存邮件到本地:return:""......
  • centos 8 安装python3
    sudodnfinstallpython3  查看版本 查看pip ......
  • 01_Python 基础
    01_Python基础Python解释器&pycharm安装注释#变量常量input#输入框if#条件判断while#循环关键字continuebreak关键字pass01.for循环for变量in可迭代的东西:代码把可迭代的东西中的每一项内容拿出来,挨个的赋值给变量,每一次赋值都要执行......
  • python os.environ操作环境变量
    1、.env文件数据添加到环境变量load_dotenv(ROOT_DIR+'/.env',verbose=True)或load_dotenv(find_dotenv('.env')2、新增环境变量,其中key和value均为string类型os.environ['环境变量名称']='环境变量值'  环境变量立刻生效,从设置开始后面的运行部分都能获取到该变量os.e......
  • python面试题汇总
    以下是一些常见的Python面试题以及它们的答案:Python中的GIL是什么,有何作用?GIL全称GlobalInterpreterLock,是Python解释器在多线程情况下保证线程安全的一种机制。GIL确保同一时间只有一个线程可以执行Python字节码,从而避免了由于多个线程同时修改共享数据造成的竞态条件问题。解释......
  • Chrome浏览器好用的插件(批量保存所有选项卡网址、批量打开粘贴板网址插件)
    转自:https://www.cnblogs.com/nmap/p/6557883.html 1、Chrome批量保存所有选项卡网址+批量打开复制网址小插件批量保存所有选项卡网址插件:CopyAllUrls经常搜索一些东西,下班时无法处理完所有网页内容,比如做笔记什么的,又不舍得关闭网页。每个页面关闭前复制链接保存太麻烦......
  • 使用Python脚本修改Linux用户的密码
    直接上代码使用python,通过系统默认的passwd命令,修改用户Tom的密码为NewPasswordimportsubprocess#Gettheusernameandnewpasswordfromtheuserusername="Tom"new_password="NewPassword"#Usethe'passwd'commandtoupdatethepassword#Th......
  • 【视频】风险价值VaR原理与Python蒙特卡罗Monte Carlo模拟计算投资组合实例|附代码数
    原文链接:http://tecdat.cn/?p=22862 最近我们被客户要求撰写关于风险价值VaR的研究报告,包括一些图形和统计输出。风险价值(VaR)是一种统计数据,用于量化公司、投资组合在特定时间范围内可能发生的财务损失程度 ( 点击文末“阅读原文”获取完整代码数据******** )。什么是风......