栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

记录pandas中的concat拼接数据存入mysql中缺少列的问题

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

记录pandas中的concat拼接数据存入mysql中缺少列的问题

  • 问题描述: 因项目需求,我使用concat拼接数据存入mysql中缺少某一些列的,代码运行不抱任何的错误,唯一就是缺少列.
  • 问题原因: 字段名重复
  • 解决思路:具体想法因项目而定,这里做的是循环 第一次运行和第二次运行,也可if判断
1. concat函数参数介绍:
axis :默认为0,为按行拼接;1 为按列拼接
ignore_index: 默认为False,会根据索引进行拼接;True 则会忽略原有索引,重建新索引
join: 为拼接方式,包括 inner,outer
sort: True 表示按索引排序
    def count_1(self):
        df2 = pd.Dataframe()

        field_ = ['Fwdtaccess', 'Freplenishaccess']  # 2-74剔除77否  2-74剔除79否
        # df1 = pd.Dataframe()
        for i in range(2):
            if i == 0:
                T1_sql = 'SELECt b.FNumber, b.FName, SUM( CASE WHEN c.Fwarehouseshortname = "广州" THEN a.send_inventory ELSE 0 END ) "可发库存_全仓_广州", SUM( CASE WHEN c.Fwarehouseshortname = "武汉" THEN a.send_inventory ELSE 0 END ) "可发库存_全仓_武汉", SUM( CASE WHEN c.Fwarehouseshortname = "青鸟" THEN a.send_inventory ELSE 0 END ) "可发库存_全仓_青鸟", SUM( CASE WHEN c.Fwarehouseshortname = "唯品JITX" THEN a.send_inventory ELSE 0 END ) "可发库存_全仓_唯品JITX", SUM( CASE WHEN c.Fwarehouseshortname = "广州" THEN a.transfers_transit ELSE 0 END ) "调拨在途_全仓_广州", SUM( CASE WHEN c.Fwarehouseshortname = "武汉" THEN a.transfers_transit ELSE 0 END ) "调拨在途_全仓_武汉", SUM( CASE WHEN c.Fwarehouseshortname = "青鸟" THEN a.transfers_transit ELSE 0 END ) "调拨在途_全仓_青鸟" FROM wp_wdt_inventory_update AS a INNER JOIN wp_kingdee_bd_material AS b ON a.spec_no = b.FNumber and b.Fvirtualmaterial = "否" INNER JOIN wp_kingdee_bd_stock AS c ON a.warehouse_name = c.FName and c.{}!="否" where (c.Fwarehouseshortname="广州" or c.Fwarehouseshortname="武汉" or c.Fwarehouseshortname="青鸟" or c.Fwarehouseshortname="唯品JITX") GROUP BY b.FNumber,b.FName'.format(
                    field_[0])
                df = pd.read_sql(T1_sql, con=self.conn)

            else:
                T1_sql = 'SELECT b.FNumber, b.FName, SUM( CASE WHEN c.Fwarehouseshortname = "广州" THEN a.send_inventory ELSE 0 END ) "可发库存_全仓_广州2", SUM( CASE WHEN c.Fwarehouseshortname = "武汉" THEN a.send_inventory ELSE 0 END ) "可发库存_全仓_武汉2", SUM( CASE WHEN c.Fwarehouseshortname = "青鸟" THEN a.send_inventory ELSE 0 END ) "可发库存_全仓_青鸟2", SUM( CASE WHEN c.Fwarehouseshortname = "唯品JITX" THEN a.send_inventory ELSE 0 END ) "可发库存_全仓_唯品JITX2", SUM( CASE WHEN c.Fwarehouseshortname = "广州" THEN a.transfers_transit ELSE 0 END ) "调拨在途_全仓_广州2", SUM( CASE WHEN c.Fwarehouseshortname = "武汉" THEN a.transfers_transit ELSE 0 END ) "调拨在途_全仓_武汉2", SUM( CASE WHEN c.Fwarehouseshortname = "青鸟" THEN a.transfers_transit ELSE 0 END ) "调拨在途_全仓_青鸟2" FROM wp_wdt_inventory_update AS a INNER JOIN wp_kingdee_bd_material AS b ON a.spec_no = b.FNumber and b.Fvirtualmaterial = "否" INNER JOIN wp_kingdee_bd_stock AS c ON a.warehouse_name = c.FName and c.{}!="否" where (c.Fwarehouseshortname="广州" or c.Fwarehouseshortname="武汉" or c.Fwarehouseshortname="青鸟" or c.Fwarehouseshortname="唯品JITX") GROUP BY b.FNumber,b.FName'.format(
                    field_[1])
                df = pd.read_sql(T1_sql, con=self.conn)
            df2 = pd.concat([df2, df], axis=1)

            # aa = df.groupby(["FNumber", "Fwarehouseshortname"])[["send_inventory", "transfers_transit"]].sum()
        print(df2.info())
        print(df2.shape)
        df2.to_sql("com_count", self.engine, if_exists='append')  # replace替换,append新增 顾名思义这里不多解释 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/321981.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号