首先,对不起,我不是英国人,但我希望您仍然能理解我的问题;-)
我有一个列表,其中包含与我合作的有线网络提供商的数据。
我将这些信息按
分组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整整一周。
有人知道我接下来可以尝试什么吗? ;-)
非常感谢您
马可
答案 0 :(得分:1)
我认为评论中的@ jon-clements有正确的主意。问题在于您在分组依据中包括了"WEEK"
。删除它对我有用(在不同数据上):
traffic.groupby(["HUB","FIBER_NODES"]).apply(lambda grp: grp.nlargest(5,"WEEK"))
(我也希望nlargest
可以工作,但显然尚未为DataFrame groupbys实现它。:-/)
答案 1 :(得分:0)
谢谢您的回答。
我找到了一个效果很好的解决方案:
start_df = traffic.loc[(traffic["WEEK"] < min_week) & (traffic["STREAM_TYPE"] == str_type)].groupby(["HUB","FIBER_NODES"]).median()[["AVG_ACTIVE_CMS","AvgVal"]].reset_index()
祝您在新的一周里有个好的开始。 马可