c语言sscanf函数的用法是什么
257
2022-09-21
pandas 将min()与groupby一起使用时, 并保留其他列数据, 类似于sql中的group by having min()
我正在使用groupbypandas数据帧删除所有没有特定列的最小行。像这样的东西:
df1 = df.groupby("item", as_index=False)["diff"].min()
但是,如果我有超过这两列,则其他列将被删除。我可以使用groupby保留这些列,还是我必须找到一种不同的方法来删除行?
我的数据如下:
item diff otherstuff 0 1 2 1 1 1 1 2 2 1 3 7 3 2 -1 0 4 2 1 3 5 2 4 9 6 2 -6 2 7 3 0 0 8 3 2 9
并应该最终像:
item diff otherstuff 0 1 1 2 1 2 -6 2 2 3 0 0
但我得到的是:
item diff 0 1 1 1 2 -6 2 3 0
我一直在查看文档,找不到任何东西。我试过了:
df1 = df.groupby(["item", "otherstuff"], as_index=false)["diff"].min()df1 = df.groupby("item", as_index=false)["diff"].min()["otherstuff"]df1 = df.groupby("item", as_index=false)["otherstuff", "diff"].min()
但是没有一个可以
查阅可以有解决约这样的
方法#1:用于idxmin()获取最小元素的索引diff,然后选择:
>>> df.loc[df.groupby("item")["diff"].idxmin()] item diff otherstuff1 1 1 26 2 -6 27 3 0 0[3 rows x 3 columns]
方法#2:排序diff依次,然后取每组中的第一个元素item:
>>> df.sort_values("diff").groupby("item", as_index=False).first() item diff otherstuff0 1 1 21 2 -6 22 3 0 0[3 rows x 3 columns]
请注意,即使行内容相同,结果索引也不同。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~