这是我的DataFrame:
import pandas as pd
df = pd.DataFrame(
{
'a': [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 10, 22],
'b': [1, 1, 1, -1, -1, -1, -1, 2, 2, 2, 2, -1, -1, -1, -1],
'c': [25, 25, 25, 45, 45, 45, 45, 65, 65, 65, 65, 40, 40, 30, 30]
}
)
预期输出:df
× c
,条件是:
a b c
0 10 1 25
1 15 1 25
2 20 1 25
3 25 -1 45
4 30 -1 45
5 35 -1 45
6 40 -1 45
11 65 -1 40
12 70 -1 40
流程如下:
a) Select 所有b
个值为1
的组.在我的数据和这df
中,只有一个群体有这种情况.
b) Select 前两组(从df
的顶部开始),它们的b
值都是—1.
例如:
第25组被选中.
(2)有三种情况.前两组:第45组和第40组.
请注意,在我的数据中有一种可能性,即没有组具有a
或b
条件.如果是这样的话,返回符合条件的任何内容都可以.例如,输出可能只有一个组或根本没有组.
我想要的组如下所示:
以下是我的try ,非常接近:
df1 = df.groupby('c').filter(lambda g: g.b.eq(1).all())
gb = df.groupby('c')
new_gb = pd.concat([gb.get_group(group) for i, group in enumerate(gb.groups) if i < 2])