Python使用groupby和condition创建新的dataframe列

2024-10-03 19:31:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据帧,如下所示。你知道吗

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

我试着用transform来实现它,但是我不知道如何将它与基于count2列(以及count1列的tanking值)的条件结合起来。你知道吗

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

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

Tags: 数据名称dfnewtransformmin条件loc
1条回答
网友
1楼 · 发布于 2024-10-03 19:31:41

Series使用^{}

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行:

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

然后按player列按^{}删除重复:

print (df[df['count2'] == 2].drop_duplicates(['player']))
  player  count1  count2
3      A       4       2
6      B       2       2

相关问题 更多 >