将聚合函数输出到xlsx

2024-09-27 19:21:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有sqlite查询,我已经转向数据帧。我已经将这些数据帧传递给一个函数以获得聚合信息。如何用函数的结果填充excel工作表?如何将函数输出转换为数据帧?(注意-我正在使用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'”


Tags: to数据函数dfgetstatsgroupfunction
1条回答
网友
1楼 · 发布于 2024-09-27 19:21:36

在数据帧创建语句中,pd.数据帧第行,传递的是所有标量值,而不是iterables,因此如果添加index=[0],将得到一个单行数据帧。你知道吗

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

相关问题 更多 >

    热门问题