Python使用GROUPBY和条件创建新的数据帧列

Python使用GROUPBY和条件创建新的数据帧列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个熊猫数据框,如下所示 player count1 count2 A 1 1 A 2 1 A 3 1 A 4 2 A 5 2 B 1 1 B 2 2 B 3 2 B 4 2 列player包含姓名,count1是一个累积和,列count2包含其他计数 现在,我想创建一个包

我有一个熊猫数据框,如下所示

player  count1  count2
A       1       1
A       2       1
A       3       1
A       4       2
A       5       2
B       1       1
B       2       2
B       3       2
B       4       2
player
包含姓名,
count1
是一个累积和,列
count2
包含其他计数

现在,我想创建一个包含
count1
值的新列,其中
count2
列首先包含
2

因此,结果应如下所示:

player  count1  count2  new
A       1       1       4
A       2       1       4
A       3       1       4
A       4       2       4
A       5       2       4
B       1       1       2
B       2       2       2
B       3       2       2
B       4       2       2
我试着用
变换
,但我不知道如何将它与基于
count2
列的条件结合起来(以及对
count1
列的值进行压缩)

如果没有
groupby
,它是这样工作的,但是我不知道在哪里以及如何添加
groupby

df['new'] = df.loc[matches['count2'] == 2, 'count1'].min()
系列使用

s = df[df['count2'] == 2].drop_duplicates(['player']).set_index('player')['count1']

df['new'] = df['player'].map(s)
print (df)
  player  count1  count2  new
0      A       1       1    4
1      A       2       1    4
2      A       3       1    4
3      A       4       2    4
4      A       5       2    4
5      B       1       1    2
6      B       2       2    2
7      B       3       2    2
8      B       4       2    2
详细信息

仅通过以下方式第一次筛选
2
行:

然后通过
player
column删除重复:


@beta然后使用merge和左连接,比如df。合并(df[df['count2']==2]。在class='player',how='left'上删除重复项(['player']))
print (df[df['count2'] == 2])
  player  count1  count2
3      A       4       2
4      A       5       2
6      B       2       2
7      B       3       2
8      B       4       2
print (df[df['count2'] == 2].drop_duplicates(['player']))
  player  count1  count2
3      A       4       2
6      B       2       2