2017-04-26 82 views
2

我正在將一個sql查詢的結果寫入excel工作表,並嘗試將行轉換爲列,但似乎無法讓熊貓得到處理,似乎有某種與excel類似的難題。我已經做了我googlefu,並看了看:熊貓將行轉置爲列

how to switch columns rows in a pandas dataframe

How to convert rows values in dataframe to columns labels in Python after groupby?

Convert row to column in Python Pandas

Python Pandas: Convert Rows as Column headers

無似乎工作。請告知這一點。

import psycopg2 
import pandas as pd 
import xlsxwriter 

try: 
    conn = psycopg2.connect(private stuff cannot be shared) 
except: 
    print ("I am unable to connect to the database") 

cursor = conn.cursor() 

writer = pd.ExcelWriter("Z:/AWS/SQLQueries/Phoebe's Request.xlsx",engine = 'xlsxwriter') 

query20 = """SELECT 2 AS rowtype 
, source AS "TrafficTypes_Name" 
, COUNT(source) AS "Traffic" 
, to_char(week,'MM/dd/yyyy') AS "Week_Ending" 
FROM amazon.tracker 
where project_id = 'PCR' 
GROUP 
BY source 
, to_char(week,'MM/dd/yyyy') 
UNION ALL 
SELECT 1 
, 'Visitor Center Walk-ins' 
, COUNT(source) 
, to_char(week,'MM/dd/yyyy') as week 
FROM amazon.tracker 
where project_id = 'PCR' 
GROUP 
BY to_char(week,'MM/dd/yyyy') 
ORDER 
BY "Week_Ending" 
, rowtype""" 

cursor.execute(query20) 

result = cursor.fetchall() 

first = pd.DataFrame(result, columns = ["rowtype","TrafficTypes_Name","Traffic","Week_Ending"]) 

first.drop(first.columns[0],axis=1, inplace = True) 

first.pivot(index = 'Week_Ending', columns = 'TrafficTypes_Name' , values = 'Traffic') 

first.to_excel(writer, sheet_name = 'Visitor Traffic',index = False) 

print ("Query 20 Created") 

writer.save() 

Excel表:

TrafficTypes_Name  Traffic   Week_Ending 

Visitor Center Walk-ins 18    01/01/2017 
Resident Referral   1    01/01/2017 
Community Website   1    01/01/2017 
Realtor     1    01/01/2017 
Other Website    1    01/01/2017 
Social Media    1    01/01/2017 
Builder     3    01/01/2017 
Drive-by     10   01/01/2017 

請求:

Week_Ending Visitor Center Walk-ins  Resident Referral   Community Website   Realtor .................... 
01/01/2017   18      1       1        1 ......................... 
+0

什麼是SQL已與這一切呢?儘量讓你的問題儘可能少。 – Elmex80s

回答

2

樞紐將在這裏工作

df1 = df.pivot(index='Week_Ending', columns='TrafficTypes_Name', values='Traffic') 


TrafficTypes_Name Builder CommunityWebsite Drive-by OtherWebsite Realtor ResidentReferral SocialMedia VisitorCenterWalk-ins 
Week_Ending        
01/01/2017   3  1     10   1    1  1     1   18