Mat*_*att 4 python slice dataframe pandas
我想这是相当简单的事情,但我找不到如何做到这一点.我一直在寻找教程和stackoverflow.
假设我有一个像这样的数据帧df:
Group Id_In_Group SomeQuantity
1 1 10
1 2 20
2 1 7
3 1 16
3 2 22
3 3 5
3 4 12
3 5 28
4 1 1
4 2 18
4 3 14
4 4 7
5 1 36
Run Code Online (Sandbox Code Playgroud)
我想只选择组中至少有4个对象的行(因此至少有4行具有相同的"组"编号),对于第4个对象的SomeQuantity,当通过提升SomeQuantity在组中排序时,大于20(例如).
例如,在给定的Dataframe中,它只返回第3组,因为它有4(> = 4)个成员,而它的第4个SomeQuantity(排序后)是22(> = 20),所以它应该构造数据帧:
Group Id_In_Group SomeQuantity
3 1 16
3 2 22
3 3 5
3 4 12
3 5 28
Run Code Online (Sandbox Code Playgroud)
(是否按SomeQuantity排序,无论如何).
有人可以帮助我吗?:)
我会用.groupby()+ .filter()方法:
In [66]: df.groupby('Group').filter(lambda x: len(x) >= 4 and x['SomeQuantity'].max() >= 20)
Out[66]:
Group Id_In_Group SomeQuantity
3 3 1 16
4 3 2 22
5 3 3 5
6 3 4 12
7 3 5 28
Run Code Online (Sandbox Code Playgroud)