背景:

本人主要做新媒体运营,因为公司近期转向团购,所以开始处理团购订单,主要是留下有用数据,并进行商品、地址分类,方便分拣货物和物流配送。

而其中最繁琐的工作,就是根据地址分类,我们主要进行社区团购,涵盖附近十几个小区,有自己的物流配送师傅,但要根据小区,将货物分到配送员手上。所以,需要我们导出订单后,根据用户填写地址,分别归属到每个小区之下。订单虽说不多,基本在一百单到两百单上下,要每个地址进行对比,费时费力,还容易出错。

本着重复的工作大多是可以自动实现的,加上自学了几天pathon,就想利用pandas进行自动整理。

目标很简单,首先导出订单,然后输入路径,接着就能自动整理出两个订单,一个原表单,以做备份,一个总表,包含收货人、电话、地址、商品名称、数量等,并添加两列数据:小区,和所属范围。获取每一行地址信息,进行比对,属于哪个小区,哪个范围,如果不在对比小区中,小区则标记为null,范围则为其它。

首先导入包,以及路径地址

import pandas as pd
import osfolder_path = r'/Users/joy/订单/'
excel_name = 'test'
excel_xlsx= '.xlsx'

从下载的原始订单(test.xlsx)中,将目标表单,写入新的Excel文件(test_new.xlsx)中以作为备份,并获取想要获取的列,分别存为Series,并存为一个数组,方便后续读取。

df_original_excel = pd.read_excel(folder_path + excel_name + excel_xlsx,'接龙列表(行排不合并)')
new_excel_name = r'test_new'
writer = pd.ExcelWriter(folder_path + new_excel_name + excel_xlsx)
df_original_excel.to_excel(writer,sheet_name = '原表',index = False)s_name = df_original_excel['收货人']
s_phone_num = df_original_excel['联系电话']
s_address = df_original_excel['收货地址']
s_goods = df_original_excel['商品名称']
s_num = df_original_excel['数量']
s_remarks = df_original_excel['用户备注']
s_price = df_original_excel['商品金额']
s_refund = df_original_excel['订单已退款']s_total = [s_name,s_phone_num,s_address,s_goods,s_num,s_remarks,s_price,s_refund]

新建一个DataFrame(df_s_table),并将数组(s_total)中的Series分别存入其中。然后新建两个地址范围(range_A,range_B),其中有我们预设好的小区(A1~A5,B1~B5),新建两个Series(community_s,range_s)数据,分别存放小区和范围。

df_s_table = pd.DataFrame()for s in s_total:df_s_table[s.name] = s#两个地址范围,range_A和rang_B,其中A下有5个小区,B下有5个小区。
range_A = ['A1','A2','A3','A4','A5']
range_B = ['B1','B2','B3','B4','B5']community_s = pd.Series(len(df_s_table['收货地址']))
range_s = pd.Series(len(df_s_table['收货地址']))

设置state,进行双重循环,遍历‘收货地址’中的所有数据,并和range_A和range_B中的小区进行一一比对,如果地址中包含某小区,就在将小区名存入community_s中,并将range_s存为该范围。如果均不符合,就将community_s存为null,range_s设置为‘其它’,最后,将community_s和range_s添加到df_s_table中。

# state代表地址所属范围,0为其它,1为range_A,2为range_B,默认为其它
state = 0for i in range(len(df_s_table['收货地址'])):for item in range_sanqi:if item in df_s_table['收货地址'][i]:community_s[i] = itemrange_s[i] = 'range_A'state = 1if state != 1:for item in range_ydy:if item in df_s_table['收货地址'][i]:community_s[i] = itemrange_s[i] = 'range_B'state = 2if state == 0:community_s[i] = 'null'range_s[i] = '其它'else:state = 0df_s_table['小区'] = community_s
df_s_table['范围'] = range_s

最后,分别根据“范围”、“小区”、“收货人”进行排序,并写入new_excel中,保存,这样就基本完成了。接下来只需要将null小区改过来就行了。

df_s_table = df_s_table.sort_values(['范围','小区','收货人'])df_s_table.to_excel(writer,sheet_name = '总表',index = False)writer.save()
writer.close()

这是根据自己的工作,做的一个小程序,很简单,但还算实用。初写python,肯定有不对的地方,大家可以一起交流。

利用pandas整理订单,并根据地址对比进行分类相关推荐

  1. Python语言学习:利用pandas对两列字段元素求差集(对比两列字段所有元素的异同)

    Python语言学习:利用pandas对两列字段元素求差集(对比两列字段所有元素的异同) 目录 利用pandas对两列字段元素求差集(对比两列字段所有元素的异同) 输出结果 实现代码 利用pandas ...

  2. python计算csv文件内的数据_Python利用pandas计算多个CSV文件数据值的实例

    功能:扫描当前目录下所有CSV文件并对其中文件进行统计,输出统计值到CSV文件 pip install pandas import pandas as pd import glob,os,sys in ...

  3. 利用Pandas拆分Excel的单元格为多行并保留其他行的数据

    利用Pandas拆分Excel的单元格为多行并保留其他行的数据 1. 需求 2. Pandas解决需求 2.1 准备工作 2.2 Python程序执行 3. Pandas实现需求过程详解 3.1 碎碎 ...

  4. 阿里云AI训练营-数据分析入门:利用Pandas分析美国总统选举

    1.1 前言 本次赛事由开源学习组织Datawhale主办,主要带领学习者利用Python进行数据分析以及数据可视化,包含数据集的处理.数据探索与清晰.数据分析.数据可视化四部分,利用pandas.m ...

  5. 利用Python整理TGA的导出数据,成为Excel格式的

    ''' TGA的导出数据是ANSI格式的, 利用Python整理TGA的导出数据,成为Excel格式的. '''''' 使用Python自带的open命令,打开file1文档 file1文档是ANSI ...

  6. 利用pandas读写HDF5文件

    一.简介 HDF5(Hierarchical Data Formal)是用于存储大规模数值数据的较为理想的存储格式,文件后缀名为h5,存储读取速度非常快,且可在文件内部按照明确的层次存储数据,同一个H ...

  7. python在excel中的应用-Python利用pandas处理Excel数据的应用详解

    最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做自动化测试的时候,如果涉及到数据的读取和存储,那么而利用p ...

  8. python与excel的应用-Python利用pandas处理Excel数据的应用

    最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做自动化测试的时候,如果涉及到数据的读取和存储,那么而利用p ...

  9. Python之Pandas:利用Pandas函数实现对表格文件的查之高级查询(类似sql,分组查询等)之详细攻略

    Python之Pandas:利用Pandas函数实现对表格文件的查之高级查询(类似sql,分组查询等)之详细攻略 目录 利用Pandas函数实现对表格文件的查之高级查询(类似sql) 1.分组查询

最新文章

  1. NuGet学习笔记(3) 搭建属于自己的NuGet服务器
  2. 当AI实现多任务学习,它究竟能做什么?
  3. android连接Mysql数据库之JDBC方式
  4. C++运行时候库操作概述和整个程序运行流程
  5. “打头办”不在百度,在民间
  6. gscatter in matlab Scatter plot by group machine learning and statics tool box required
  7. TensorFlow Serving + Docker + Tornado机器学习模型生产级快速部署
  8. Flink三种运行模式安装部署
  9. android 属性动画变大,Android PropertyAnimation 属性动画(一)初探
  10. 视图 索引 存储过程
  11. Android的NDK开发(2)————利用Android NDK编写一个简单的HelloWorld
  12. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-3.Vidoe相关接口完善和规范协议...
  13. qwidget设置背景透明_手机上设置“小小科技半透明”主题背景,效果美翻天!...
  14. 手机安装 Linux 系统教程
  15. 水晶易表 Xcelsius 2008 安装指南 完美支持office2010
  16. 视频分辨率过高,导致部分手机播放失败
  17. 特征工程之数据预处理与可视化
  18. 机器学习-线性回归-身高体重关系预测
  19. 开学季·DGUT立Flag =W=
  20. Android 7.0配置fileprovider共享文件 解决FileUriExposedException

热门文章

  1. 会声会影2020Corel Video Studio注册机安装激活教程
  2. 项目技术指标(招标文件)
  3. CI 框架邮件发送功能,以163为例
  4. 【高性能计算背景】《并行计算教程简介》翻译 - 中文 - 4 / 4
  5. android 健康分析,开题报告-基于Android的健康指标记录与分析软件的设计与实现.doc...
  6. 不会时间序列预测?不要紧,大神来教你
  7. java1.8安装_2020JDK1.8安装教程详解(一次就可安装成功)
  8. Office365跨订阅迁移邮箱-批量导入用户PST文件
  9. [原]利用ps制作金属纹理效果
  10. 常用正则表达式及学习