簡體   English   中英

Pandas將函數輸出聚合到xlsx

[英]Pandas aggregate function output to xlsx

我有sqlite查詢,我已轉向pandas數據幀。 我已將這些數據幀傳遞給函數以獲取聚合信息。 如何使用函數的結果填充excel工作表? ie-如何將功能輸出轉換為數據幀? (注意 - 我使用openpyxl來創建工作簿)

這是df和函數的代碼:

# Nationwide measure statistics
nationwide_measures = pd.read_sql_query("""select state,
          measure_id,
          measure_name,
          score
from timely_and_effective_care___hospital;""", conn)

# Remove the non-numeric string values from 'score'
nationwide_measures1 = nationwide_measures[nationwide_measures['score'].astype(str).str.isdigit()]

# Change score to numeric
nationwide_measures1['score'] = pd.to_numeric(nationwide_measures1['score'])

# Function to grab measure values
def get_stats(group):
    return {'Minimum': group.min(), 'Maximum': group.max(), 'Average': group.mean(), 'Standard Deviation': group.std()}

# Function output    
nationwide_measures1['score'].groupby(nationwide_measures1['measure_id']).apply(get_stats).unstack()

我試過了:

# Function to grab measure values
def get_stats(group):
    return pd.DataFrame({'Minimum': group.min(), 'Maximum': group.max(), 'Average': group.mean(), 'Standard Deviation': group.std()})

但是這會返回“值錯誤:如果使用所有標量值,則必須傳遞索引”

我也嘗試過:

# Function to grab measure values
def get_stats(group):
    df = pd.DataFrame({'Measure Name': group.columns['measure_name'],'Minimum': group.min(), 'Maximum': group.max(), 'Average': group.mean(), 'Standard Deviation': group.std()}, index = [0])
    return df

但這會給出錯誤:“AttributeError:'Series'對象沒有屬性'columns'”

在您的數據框創建語句pd.DataFrame行中,您傳遞的是所有標量值而沒有迭代,因此如果添加index = [0],您將獲得單行數據幀。

pd.DataFrame({'Minimum': group.min(), 'Maximum': group.max(), 'Average': group.mean(), 'Standard Deviation': group.std()},index=[0]) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM