我有一个如下数据框:
Index Fruit ID
0 Apple 0.5
0 Apple 1
1 Orange 1.6
1 Orange 2
2 Banana 2.3
2 Banana 3
我想基于以下算法创建一个新的数据帧:取满足Index + 0.5< = ID的第一行,将行添加到新数据帧,否则添加到下一行。所以结果应该是这样的:
我相信我可以在一个乏味且低效的循环中做到这一点,但知道熊猫非常强大(我对熊猫来说很新),有没有更有效的方法来创建数据帧?
答案 0 :(得分:0)
IIUC,使用groupby
+ apply
+ head
:
df.groupby('Index', group_keys=False)\
.apply(lambda x: x[x['Index'] + 0.5 <= x['ID']].head(1))
Index Fruit ID
0 0 Apple 0.5
2 1 Orange 1.6
5 2 Banana 3.0