2016-04-21 10 views
1

Lets sagen, ich habe diese Funktionen Kombination:mehrere Datenrahmen Ergebnisse mit für Loop in Python Pandas

def query(): 
    dict = (
      { "NO" : 1, "PART" : "ALPHA" }, 
      { "NO" : 2, "PART" : "BETA" } 
      ) 
    finalqueryresult = pandas.DataFrame() 

    for info in dict: #I use this loop to request query depends on the dict data, in this example twice (2 records from dict) 
     finalqueryresult.append(sendquery(info["NO"], info["PART"])) 

def sendquery(no, part): 
    *some code to request query to server and save it under reqresult variable* 
    *.....* 
    *.....* 
    return reqresult 

Zum Beispiel oben, wenn die erste Abfrage Senden (Datensatz mit "NO" = 1) wird es zurück: (läßt sagen diese df1)

NAME COUNTRY 
1 RYO JPN 
2 JON NZ 

und die letzte Abfrage (Datensatz mit "NO" = 2 ist): (können sagen, diese df2)

NAME COUNTRY 
1 TING  CN 
2 ASHYU  INA 

und was ich will, ist finalqueryresult so sein wird: (DF1 mit df2 kombiniert):

NAME  COUNTRY 
1 RYO  JPN 
2 JON  NZ 
3 TING  CN 
4 ASHYU  INA 

Aber ich scheiterte, die finalqueryresult ist immer leer. Ich nehme etwas mit, das ist falsch:

for info in dict: 
    finalqueryresult.append(sendquery(info["NO"], info["PART"])) 

Antwort

2

Ich glaube, Sie müssen zuerst anhängen alle DataFramesdfs aufzulisten und dann verwenden concat:

dfs= [] 
for info in dict: 
    #sendquery(info["NO"], info["PART"] return DataFrame 
    dfs.append(sendquery(info["NO"], info["PART"])) 

finalqueryresult = pd.concat(dfs, ignore_index=True) 
+1

nice! Ich wusste nichts über das 'ignore_index' Argument. – jrjc

+0

OMG! Es hat funktioniert!, Danke – noobsee

+0

Froh kann dir helfen! Viel Glück! – jezrael

Verwandte Themen