2017-10-19 18 views
1

J'essaie d'envoyer des données Pandas via une requête SQL, puis enregistrer les résultats pivotés dans un fichier .csv. Jusqu'à présent, j'ai réussi.Filtrage Pandas PivotTable

import cx_Oracle 
import pandas as pd 

query = """ 
     SELECT 
      dt, 
      --Workstack, 
      GM, 
      COUNT(JOB_NUMBER) 
     FROM MY_TABLE 
     GROUP BY 
      dt, 
      --Workstack, 
      GM 
""" 

connection = cx_Oracle.connect("<My_Username>", "<My Password>", "<Database String>") 
df = pd.read_sql_query(query, connection) 
piv = df.pivot(index='GM', columns='DT', values='COUNT') 
print (piv.head()) 

piv.to_csv('''Workstack.csv''') 

Maintenant, je souhaite inclure le champ « Workstack » utilisé dans la variable de requête et je veux aussi utiliser pandas géants pour filtrer sur différentes chaînes avec le Workstack sur le terrain puis les coller comme différents fichiers csv ou sur le même Excel fichier. Cependant, quand je Workstack inclus dans le python de requête me donne cette erreur ...

ValueError: Index contains duplicate entries, cannot reshape

Toute idée comment je résoudre ce problème? Finalement, je veux utiliser un module Excel python pour coller des tableaux croisés dynamiques comme celui ci-dessus sur des cellules et des feuilles différentes.

Merci :)

+0

essayer de réinitialiser l'index avant de pivotement. Df.reset_index() pivot – skrubber

Répondre

1

Essayez pivot_table avec fonction d'agrégation:

piv = df.pivot_table(index='GM', columns='DT', values='COUNT', aggfunc='sum') 
+1

ou groupby();) – jezrael

+0

Un grand merci pour l'aide! Y at-il de toute façon je peux créer plus de tables pivotantes en filtrant sur différentes valeurs "Workstack"? –

+0

Oui, 'df.query ('Workstack == 5) .pivot_table (index =' GM ', colonnes =' DT ', valeurs =' COUNT ', aggfunc =' sum ')'. –

0
import cx_Oracle 
import pandas as pd 

query = """SELECT * FROM MY_TABLE""" 

print('Loading Query') 

connection = cx_Oracle.connect("Username", "Password", "Data Connection") 
df = pd.read_sql_query(query, connection) 

PivotTable = df.loc[df['ColumnName'] == "ValueinColumn"].pivot_table(index='SelectRows', columns='SelectColumns', values='SelectValues', aggfunc='SelectAggregation') 

print ("Writing to Excel") 

ExcelWorkbook = pd.ExcelWriter('Data.xlsx') 
PivotTable.to_excel(ExcelWorkbook, sheet_name='PivotTable', startrow=1) 
ExcelWorkbook.save() 

print ("Closing Connection") 
connection.close() 

print('Section Complete')