2017-10-19 156 views
1

我試圖通過SQL查詢爲大熊貓提供一些數據,然後將旋轉結果保存到.csv文件中。到目前爲止,我已取得成功。篩選熊貓數據透視表

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''') 

現在我想包括查詢變量中使用的字段「Workstack」,我也希望用大熊貓與現場Workstack不同的字符串過濾,然後將其粘貼不同的CSV文件或在同一個Excel文件。然而,當我查詢蟒蛇內包括Workstack給了我這個錯誤...

ValueError: Index contains duplicate entries, cannot reshape

任何想法如何解決這個問題?最終,我想使用python Excel模塊將上面的數據透視表粘貼到不同的單元格和工作表上。

由於:)

+0

嘗試樞轉之前,將索引復位:df.reset_index()樞軸 – skrubber

回答

1

嘗試pivot_table具有聚合功能:

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

或GROUPBY();) – jezrael

+0

非常感謝您的幫助!無論如何,我可以通過過濾不同的「Workstack」值來創建更多的數據透視表嗎? –

+0

是的,'df.query('Workstack == 5).pivot_table(index ='GM',columns ='DT',values ='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')