我有一个如下所示的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
答案 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_duplicates
的player
列中删除重复项:
print (df[df['count2'] == 2].drop_duplicates(['player']))
player count1 count2
3 A 4 2
6 B 2 2