美文网首页
3.pandas表格的 纵向拼接 与 横向关连

3.pandas表格的 纵向拼接 与 横向关连

作者: B0ZZ | 来源:发表于2017-12-17 00:14 被阅读0次

抛开统计不提,数据整理,说难很难,说简单也很简单。难,多半是因为这事儿着实太耗时;简单,数据整理无非是筛选、逻辑赋值、左右连和内连。
本回,先说左右连和内连。

0 实验数据

表1:仓库信息表(表名=inv_info)

仓库编号 仓库
7 备货仓
5 华东仓(原零售仓)
0 内部测试仓

表2:仓库商品信息表1(表名=sku_detail_1)

仓库编号 SKU 批次 批号 收货数
7 102001 YQ1HMC 20190816 11
5 102001 YQ1HMC 20190816 5
7 102001 YQ1HMC 20190816 1
... ... ... ... ...

表3:仓库商品信息表2(表名=sku_detail_2)

仓库编号 SKU 批次 批号 收货数
7 102104 dfhg 20190705 1
5 102105 CSRE001 20190524 2
7 102001 YQ1HMC 20190816 1
... ... ... ... ...
import numpy as np
import pandas as pd
inv_info = pd.DataFrame([['7','备货仓'],['5','华东仓(原零售仓)'],['0','内部测试仓']], columns=['仓库编号','仓库'])
sku_detail_1= pd.DataFrame([['7','102001','YQ1HMC','20190816','11'],['5','102001','YQ1HMC','20190816','5'],['7','102001','YQ1HMC','20190816','1'],['5','102002','YQ1HMB','20190815','6'],['5','102005','YQ1HMB','20190816','10'],['7','102101','CSQA002','20180130','1'],['5','102104','CSRF001','20190705','6']], columns=['仓库编号','SKU','批次','批号','发货数量'])
sku_detail_2= pd.DataFrame([['7','102104','dfhg','20190705','1'],['5','102105','CSRE001','20190524','2'],['7','102105','0411A','20190524','1'],['5','102111','CSRF001','20190705','2'],['5','102111','fh22','20190705','1'],['7','102111','dg0h52','20190502','1'],['7','102113','CSRF002','20190705','1'],['5','102114','A','20190618','1'],['7','102114','fh02','20190618','1'],['5','102115','','20190704','1'],['7','102116','YQ2FMA','20190606','6'],['5','102116','YQ2FMA','20190606','7']], columns=['仓库编号','SKU','批次','批号','发货数量'])

1 表格的纵向拼接

两张仓库商品信息表的表结构完全一致。假设数据来自同一仓库不同库位,如果要计算当前商品的库存,必须先将两张表纵向拼接起来,然后统计每个仓库有多少种sku以及每个sku在所有仓库的总库存数。

sku_detail = pd.concat([sku_detail_1, sku_detail_2],names=['仓库编号','SKU','批次','批号','发货数量'])
sku_detail.groupby(['仓库编号']).agg({'SKU':pd.Series.nunique})
sku_detail.groupby(['SKU']).agg({'发货数量':np.sum})

表格的纵向拼接

2 表格的横向关连

表格关连有三种方式,分别是左连,右连和内连。此处不解释三者的区别,请直接看数据和结果图。

左连(留意SKU、批次、批号等字段为NaN的部分)
left_join = pd.merge(inv_info, sku_detail, left_on=['仓库编号'], right_on=['仓库编号'], how='left')
left_join [['仓库编号','仓库','SKU','批次','批号','发货数量']]

左连

左连和右连几乎是完全相同的操作,唯一的区别是how='left'与how='right'。

内连(留意'仓库编号'为0的仓库不在结果集中)
inner_join = pd.merge(inv_info, sku_detail, left_on=['仓库编号'], right_on=['仓库编号'], how='inner')
inner_join[['仓库','仓库编号','仓库','SKU','批次','批号','发货数量']]

内连

相关文章

  • 3.pandas表格的 纵向拼接 与 横向关连

    抛开统计不提,数据整理,说难很难,说简单也很简单。难,多半是因为这事儿着实太耗时;简单,数据整理无非是筛选、逻辑赋...

  • 轻松搞定多个Excel表格的纵向拼接合并

    上一篇,我们分享了Excel表格的横向拼接合并, 这一篇,我们来分享Excel表格的纵向拼接合并。 Excel表格...

  • Python 矩阵拼接

    使用 dumpy 的concatenate() 纵向拼接 举例数据 默认纵向拼接 横向拼接 设置axis=1

  • SPSS数据分析从零开始(8)多个文件的合并

    SPSS数据文件的合并方式有两种:纵向拼接和横向合并。 纵向拼接:指的是几个数据集中的数据纵向相连,组成一个新的数...

  • html表格

    表格 用 添加一个表格 表格合并 横向合并:colspan="2"纵向合并:rowspan="2" 注意把合并掉多...

  • swiper中表格scroll无效果

    ->表格中css样式overflow:scroll; ->swiper中纵向滑动改横向滑动 (direction默...

  • 七 .Html的表格

    1.表格 owspan 纵向的合并单元格 colspan 横向的合并单元格 2. 长表格 3.表格的样式 4. 表...

  • 打印小技巧(下)

    1.文档中有表格,纵向页面横向打印 按【Ctrl+P】快捷键,进入【打印】界面,在打印【设置】中直接把【纵向】改为...

  • 2018-10-10(静)

    《论服务规模经营—从纵向分工到横向分工及连片专业化》读书心得 在农业领域,纵向分工与横向分工是相互关联的。横向分工...

  • 《自学大全》Day4

    今日读寻找资料之“记录日志法”。通过表格的方式呈现。 表格横向是已知,欲知,查找方式。 纵向是主题及想了解的内容。...

网友评论

      本文标题:3.pandas表格的 纵向拼接 与 横向关连

      本文链接:https://www.haomeiwen.com/subject/deknuxtx.html