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