使用聚合计算获取两个数据帧之间的均值和标准差

Use aggregate computations to obtain mean and std between two dataframes

我有两个数据框:df1df2。我想使用聚合来获取两个数据框中 s_values 之间的 meanstd,并将这些结果放入名为 new_df

的新数据框中

df1 =

         statistics  s_values
year
1999  cigarette use       100
1999  cellphone use       310
1999   internet use       101
1999    alcohol use       100
1999       soda use       215

df 2 =

         statistics  s_values
year
1999  cigarette use       156
1999  cellphone use       198
1999   internet use       232
1999    alcohol use       243
1999       soda use       534

我想要得到的结果看起来像这样。 期望的输出 new_df =

         statistics  difference  mean  std
year
1999  cigarette use     56        ..    ..
1999  cellphone use    112        ..    ..
1999   internet use     78        ..    ..
1999    alcohol use    143        ..    ..
1999       soda use    319        ..    ..

我已经使用代码

构建了一个数据框,其中一列的值存在差异
new_df = df1.assign(Value=(df1['s_values'] - df2['s_values].abs())
new_df.rename(columns={'s_values':'difference'}, inplace=True)

这给了我这个输出,但我不知道如何为聚合平均值和标准差添加列

         statistics  difference  
year
1999  cigarette use     56  
1999  cellphone use    112
1999   internet use     78 
1999    alcohol use    143 
1999       soda use    319

非常感谢任何帮助

如果我对你的理解是正确的,你想加入两个数据帧并计算均值和标准偏差

你能试试这个吗?

df = df1.merge(df2, on= ['Year', 'statistics'])
df['mean']=df[['difference_x', 'difference_y']].mean(axis=1)
df['std'] = df[['difference_x', 'difference_y']].std(axis=1)

如果您想要评论中提到的 groupby 解决方案,也可以试试这个

pd.concat([df1[['difference']], df2[['difference']]]).groupby(level=0).std()

pd.concat([df1[['difference']], df2[['difference']]]).groupby(level=0).mean()