【发布时间】:2019-06-11 14:59:54
【问题描述】:
一些练习要求在应用聚合函数时向 df 列“添加辅助名称”。
鉴于以下 DF:
stype = ['s1','s1','s1','s1',
's2','s2','s2','s2']
dtype = ['d1','d1','d2','d2',
'd1','d1','d2','d2']
qty = [2, 1.4, 7, 3,
4, 1, 2.0, 3]
df = pd.DataFrame({'s_type':stype,
'd_type':dtype,
'qty':qty})
当按前 2 列分组并应用这样的 agg 函数时
new_df=df.groupby(['s_type','d_type'],sort = False).agg({'qty':'median'})
然后打印(new_df)
我得到这个输出,注意qty 向上移动了一行(我认为这是正常行为),因为它是应用 agg 函数的一列
qty
s_type d_type
s1 d1 1.7
d2 5.0
s2 d1 2.5
d2 2.5
问题会是什么
是否可以在qty label/name 下设置辅助列名称?,以获得如下输出:
qty
s_type d_type Median
s1 d1 1.7
d2 5.0
s2 d1 2.5
d2 2.5
还有
为什么qty 向上移动 1 行? (我正在使用 Spyder,我也在 Anaconda/python 控制台中看到了这一点,不确定它是一个功能还是 pandas 的正常行为)。
最后一次更新:如果您需要使用 sort_values,您将不得不为添加二级索引/名称的列使用元组,与应用聚合函数时的方式几乎相同(查看答案)
new_df=new_df.sort_values([('qty','MEDIAN')])
所以你得到的 DF 按应用了 agg 函数的列和我们添加索引的列排序
qty
MEDIAN
s_type d_type
s1 d1 1.7
s2 d1 2.5
d2 2.5
s1 d2 5.0
python v3.6
熊猫 v0.23
谢谢。
【问题讨论】:
标签: python python-3.x pandas pandas-groupby