最佳答案
我在熊猫数据框架上使用 groupby
删除所有没有最小特定列的行。就像这样:
df1 = df.groupby("item", as_index=False)["diff"].min()
但是,如果我有多于这两个列,其他列(例如我的示例中的 otherstuff
)将被删除。我是否可以使用 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()
但是这些都不起作用(最后一个我意识到语法是用来在创建组之后进行聚合的)。