在python中重命名多个聚合结果列时出现问题
我有一个关于大熊猫多重聚集的问题 最初我有一个数据集,显示石油价格,细节如下: 数据集的标题如下所示: 我想做的是得到2014年每个季度的平均值和标准差。理想输出如下: 在我的脚本中,我已经通过这样做创建了季度信息。 但是,有一件事我不明白: 如果我尝试使用此命令执行此操作在python中重命名多个聚合结果列时出现问题,python,pandas,aggregate-functions,Python,Pandas,Aggregate Functions,我有一个关于大熊猫多重聚集的问题 最初我有一个数据集,显示石油价格,细节如下: 数据集的标题如下所示: 我想做的是得到2014年每个季度的平均值和标准差。理想输出如下: 在我的脚本中,我已经通过这样做创建了季度信息。 但是,有一件事我不明白: 如果我尝试使用此命令执行此操作 brent[brent.index.year == 2014].groupby('quarter').agg({"average_price": np.mean, "std_price&
brent[brent.index.year == 2014].groupby('quarter').agg({"average_price": np.mean, "std_price": np.std})
我得到一个错误如下:
如果我使用下面的脚本,那么它就可以工作了
brent[brent.index.year == 2014].groupby('quarter').agg(average_price=('Price','mean'),
std_price=('Price','std'))
因此,问题是:
- 第一种方法有什么问题
- 为什么我们需要在这里使用第二种方法
average\u price
,std\u price
中查找列,因为返回错误时数据帧中不存在列
可能的解决方案是在groupby之后指定列,并通过聚合函数传递指定新列名的元组列表:
brent[brent.index.year == 2014].groupby('quarter')['Price'].agg([('average_price','mean'),('std_price',np.std)])
brent[brent.index.year == 2014].groupby('quarter').agg(average_price=('Price','mean'),
std_price=('Price',np.std),
sumQ=('quarter','sum'))
这是可能的,因为对于一列Price
可以定义多个列名称
在以后的版本中,将使用:
这里是逻辑-对于每个聚合,都使用聚合列和聚合函数来定义nw列名。因此,可以使用不同的函数聚合多个列:
brent[brent.index.year == 2014].groupby('quarter')['Price'].agg([('average_price','mean'),('std_price',np.std)])
brent[brent.index.year == 2014].groupby('quarter').agg(average_price=('Price','mean'),
std_price=('Price',np.std),
sumQ=('quarter','sum'))
注意,np.std
具有默认值ddof=0
,而pandasstd
具有ddof=1
,因此输出不同