这是我的DataFrame:
import pandas as pd
df = pd.DataFrame(
{
'a': ['x', 'x', 'x', 'x', 'y', 'y', 'y', 'y', 'z', 'z', 'z', 'p', 'p', 'p', 'p'],
'b': [1, -1, 1, 1, -1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1]
}
)
这是预期的yields .我想创建第c
列:
a b c
0 x 1 first
1 x -1 first
2 x 1 first
3 x 1 first
4 y -1 second
5 y 1 second
6 y 1 second
7 y -1 second
11 p 1 first
12 p 1 first
13 p 1 first
14 p 1 first
组由列a
定义.我要筛选df
,并 Select 第一个b
为1或第二个b
为1的组.
我是通过这个代码做到的:
df1 = df.groupby('a').filter(lambda x: (x.b.iloc[0] == 1) | (x.b.iloc[1] == 1))
为了为df1
创建列c
,同样应该由a
来定义组,然后,如果对于每个组,第一个b
是1,则c
是first
,如果第二个b
是1,则c
是second
.
请注意,对于组p
,第一个和第二个b
都是1,对于这些组,我希望c
是first
.
也许我处理这个问题的方式是完全错误的.