2017-10-19 6 views
1

SQL 쿼리를 통해 팬더에 일부 데이터를 공급하고 피벗 된 결과를 .csv 파일에 저장하려고합니다. 지금까지 나는 성공적이었다. 다음 그들과 같은 다른 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 서로 다른 문자열을 필터링하는 팬더를 사용하려면 파일. 내가 쿼리 파이썬에서 Workstack을 포함 할 때, 나에게 내가이 문제를 해결하는 방법

ValueError: Index contains duplicate entries, cannot reshape

어떤 아이디어 ...이 오류 준다? 결국 파이썬 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 (색인 = 'GM', 열 = 'DT', 값 = 'COUNT', aggfunc = '합계')'. –

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