首先,抱歉我不是英语母语,但我希望你能理解我的问题;-)
我有一份 list ,其中包含与我合作的有线网络提供商的数据。
我已将这些信息按
分组traffic.groupby(["HUB","FIBER_NODES","WEEK"])
这很好用,我正在获取每个 HUB-NODES-WEEK 组的所有信息。 但现在我想检查交通发展。为此,我想获得此数据框中前 5 周和后 5 周的平均值之间的差异。
为此,我不想将日历周保持在 1 到 38 之间。我只想保持 1 到 5 或 34 到 38。
我试过:
traffic.groupby(["HUB","FIBER_NODES","WEEK"]).nlargest(5)
错误:AttributeError:无法访问“DataFrameGroupBy”对象的可调用属性“nlargest”,尝试使用“apply”方法
下次尝试:
traffic.groupby(["HUB","FIBER_NODES","WEEK"]).apply(lambda grp: grp.nlargest(5,"WEEK"))
这没有用,我仍然得到从 1 到 38 的所有星期。
有人知道我接下来可以尝试什么吗? ;-)
非常感谢
马可
最佳答案
我认为评论中的@jon-clements 的想法是正确的。问题是您在 groupby 中包含了 "WEEK"
。删除它对我有用(在不同的数据上):
traffic.groupby(["HUB","FIBER_NODES"]).apply(lambda grp: grp.nlargest(5,"WEEK"))
(我也希望 nlargest
可以工作,但显然它还没有为 DataFrame groupbys 实现。:-/)
关于python - 按 3 列分组,每组只保留最小的 5 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58462811/