下面是pandas dataframe我的一个子集,我试图根据某些条件删除多行。
code1 code2 grp1 grp2 dist_km
0 M001 M002 AAA AAA 112
1 M001 M003 AAA IHH 275
2 M002 M005 AAA XXY 150
3 M002 M004 AAA AAA 65
4 M003 M443 IHH GRR 50
5 M003 M667 IHH IHH 647
6 M003 M664 IHH FFG 336
所以我只想保持行的位置grp1与grp2每个行的相同,code1但只有dist_km那个特定的最小值code1。
对于上面的示例,仅保留以下行:
code1 code2 grp1 grp2 dist_km
0 M001 M002 AAA AAA 112
3 M002 M004 AAA AAA 65
最简单的方法是什么?
我目前有一个解决办法
用两个条件
df.loc[(df['dist_km'] == df.groupby('code1')['dist_km'].transform('min')) & (df['grp1'] == df['grp2'])]
code1 code2 grp1 grp2 dist_km
0 M001 M002 AAA AAA 112
3 M002 M004 AAA AAA 65








暂无数据