我對Pandas非常陌生。我如何將下面的查詢轉換為pandas語法。我不再查詢MS Access表,我現在查詢的是一個名為df的pandas資料框架。
該查詢是:
SELECT
Short_ID,
SUM(IIF(Status = 'Completed', 1, 0) ) / COUNT (Status) AS completion_metric
FROM (狀態)
PROMIS_LT_Long_ID
GROUPBY
Short_ID。
查詢結果將是這樣的:
Short_ID | completion_metric
--------- ------------------
1004 | 0.125
1005 | 0
1004 | 0.5
我已經用下面的代碼創建了pandas df,現在我想查詢pandas DataFrame,并獲得與上述查詢相同的結果。
import pyodbc
import pandas as pd
def connect_to_db():
db_name = "imuscigrp"/span>
conn = pyodbc.connect(r'DRIVER={SQL Server}; SERVER=tcp:SQLDCB301P.uhn.caSQLDCB301P;DATABASE=imucsigrp'。
r';UID=imucsigrp_data_team;PWD=Kidney123!')
cursor = conn.cursor()
return cursor, conn
def completion_metric()。
SQL_Query = pd.read-sql_query('SELECT PROMIS_LT_Long_ID.Short_ID, PROMIS_LT_Long_ID.Status FROM PROMIS_LT_Long_ID', conn)
#converts SQL_Query into Pandas dataframe .
df = pd.DataFrame(SQL_Query, columns = ["Short_ID", "Status"] )
#querying the df to obtain longitudinal completion metric values return>
任何貢獻都會有幫助,謝謝你
uj5u.com熱心網友回復:
你可以使用一些numpy函式來執行類似的操作
。例如,numpy.where根據一個條件來替換值。
import numpy as np
df = pd.DataFrame(SQL_Query, columns = ["Short_ID", "Status"] )
df["completion_metric"] = np.where(df.Status == "completed", 1, 0)
然后numpy.average來計算分組資料的平均值。
completion_metric = df.groupby("Short_ID"/span>).agg({"completion_metric"/span>: np.average})
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/329402.html
標籤:
上一篇:如何從wsl控制臺的容器中運行帶有別名的terraform?
下一篇:<p>我正在嘗試學習串列理解法和迭代器的條件。 我的問題是,我不明白我的if/else條件是如何在這個串列上起作用的,哪個if或el首先起作用并列印。 <preclass="
