我有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
但是这会给出错误:"属性错误:'系列'对象没有属性'列'"
答案 0 :(得分:0)
在数据框创建语句pd.DataFrame行中,您传递的是所有标量值而没有迭代,因此如果添加index = [0],您将获得单行数据帧。
pd.DataFrame({'Minimum': group.min(), 'Maximum': group.max(), 'Average': group.mean(), 'Standard Deviation': group.std()},index=[0])