【问题标题】:Pandas Multiple dataframes not Stacking Vertically熊猫多个数据框不垂直堆叠
【发布时间】:2022-06-10 18:45:36
【问题描述】:

我有这个 python 程序,它用于在许多服务器上获取 sql 查询结果,我想做的是将每个结果堆叠到一个 excel 上,但是当我使用 pandas.concat([],axis=0) 时,下一个数据帧会跳转到下一个索引列而不是堆叠。我使用了 ignore_index=True 但数据框不会忽略索引

from ast import Not
from cmath import inf
from multiprocessing import connection
from operator import index
from sqlite3 import Cursor
from unittest.result import failfast
import mysql.connector
from mysql.connector import errorcode
from numpy import save

import pandas as pd
from requests import NullHandler
from sqlalchemy import false
#importing Queries
from Queries import *

#Location Ip's
from locations import locs

from env import *

startDate='2022-05-01'
endDate='2022-05-15'

from lib import fileChecker,logwriter

    

from cmath import inf
from multiprocessing import connection
from operator import index
from sqlite3 import Cursor
from unittest.result import failfast
import mysql.connector
from mysql.connector import errorcode

import pandas as pd
from sqlalchemy import false
#importing Queries
from Queries import *

#Location Ip's
from locations import locs

from env import *

startDate='2022-05-01'
endDate='2022-05-15'

from lib import fileChecker,logwriter

    

def executor(QUERY):
    alldf = None
    
    for type,info in locs.items():
        fileChecker(type)

        for ip,locName in info.items():

            try:
                cnx = mysql.connector.connect(user=usr, password=passwd,host=ip, database=db)

                if cnx.is_connected():
                    print("Connection Succesfull to {}".format(locName))
                    logwriter(type,ip,locName,True)


                    location = cnx.cursor(buffered=True)
                    location.execute("SELECT loccod FROM docparameters d limit 1")

        
                    loc = location.fetchone()[0]
        
                    
                    cursor = cnx.cursor()
                    cursor.execute(QUERY)
                    df = pd.DataFrame(cursor.fetchall())
                    

                    if alldf is not None:
                       if not df.empty:
                           alldf = pd.concat([alldf,df],ignore_index=True,axis=0)
                    else:
                        alldf = df
                 
                
                    print(df)
                    field_names = [ i[0] for i in  cursor.description]
                    print(field_names)
                        
                    xlswriter = pd.ExcelWriter('{}/{}.xls'.format(type,loc),engine='openpyxl')

                    if not df.empty:
                        df.columns = field_names  
                      
                        df.to_excel(xlswriter,index=false)

                        xlswriter.save()
                    else:
                        cnx.close()
   
            except mysql.connector.Error as err:

                if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
                    print("Something wrong with your username or password")
                elif err.errno == errorcode.ER_BAD_DB_ERROR:
                    print("DATABASE does not exist")
                else:
                    print(err)
                    print("Connectin Failed to %s"%(loc))
                    logwriter(type,ip,locName,False)

                   
            else:
                cnx.close()

    return alldf
   









def saveToExcel(query,filename):

    xlswriter = pd.ExcelWriter("%s.xls"%(filename),engine='openpyxl')
    queryDatas = executor(query)
    print(queryDatas)
    export = queryDatas
    export.to_excel(xlswriter)
    xlswriter.save()


    print("succes savetoExcel")


saveToExcel('desc rms_itmmaster;','peoples')

【问题讨论】:

  • 将代码减少到最低限度以显示问题。 mysql 对这个问题没有用,也没有写入 xls,也没有所有的导入。将其简化为 Pandas 问题;不要让我们涉足您的代码。

标签: python pandas


【解决方案1】:

您确定数据框相同吗?如果列不同,您的代码也会创建额外的列。

查看此讨论:Pandas merge two dataframes with different columns

如果您向我们展示部分结果会很好,而且我认为这不是数据科学标签。

【讨论】:

    猜你喜欢
    • 2019-08-05
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 2021-10-28
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多