Python Pandas具有分组依据和条件的新数据框列

时间:2018-07-29 13:11:27

标签: python pandas dataframe

我有一个如下所示的Pandas数据框。

null

null列包含名称,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

groupby

1 个答案:

答案 0 :(得分:3)

Series使用map

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

详细信息

首先仅按boolean indexing过滤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

然后在drop_duplicatesplayer列中删除重复项:

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