我有一个大的dataframe
,我在上面运行这样的groupby
操作。
df_3[filter_3].groupby(grpby_3).agg({'AOT in Cases':lambda x: round(100*np.mean(x),0),'COT by ME (1.3.2)':lambda x: round(100*np.mean(x),0)}).unstack('Quarter')
这样就得到了一个多索引输出,如下所示:
AOT in Cases COT by ME (1.3.2)
Quarter 2022Q2 2022Q3 2022Q4 2022Q2 2022Q3 2022Q4
Lane Carrier Scac
BLOOMINGTON, CA - APPLE VALLEY, CA LEGS 94.0 86.0 95.0 100.0 95.0 98.0
我想要的是将它打包到一个容器中(理想情况下是一个元组),用于'AOT in Cases'和'COT by ME(1.3.2)',并删除四分之一列。
Lane Carrier Scac AOT in Cases COT by ME (1.3.2)
BLOOMINGTON, CA - APPLE VALLEY, CA LEGS (94.0, 86.0, 95.0) (100.0, 95.0, 98.0)
理想情况下,如果它可以编码在同一组行,这是最好的。如果没有,我可以运行另一行,以获得所需的结果。
我想可能是apply(lambda x: ))
不知何故可能会有帮助。但无法得到周围的头。
任何线索都会有帮助。
还有一个额外的问题,虽然不是很重要,你会注意到在groupby().agg()
方法中我对“平均值”的乘法做了一个lambda运算,有没有更快更短的方法?
agg({'AOT in Cases':lambda x: round(100*np.mean(x),0)
1条答案
按热度按时间xdnvmnnf1#
虽然没有人回答,但我在另一个不同的问题中发现了类似的方法。这建议使用
list(zip(series1,series2,...))
&它解决了我的问题。我本可以删除这个问题,但考虑到其他人可能会再次提出这个问题,就这样离开了。