Pandas groupby()比较并计算两列

时间:2017-10-29 17:10:01

标签: python pandas compare pandas-groupby

我有以下Pandas数据帧:

name1   name2
A       B
A       A
A       C
A       A
B       B
B       A

我想添加一个名为new的列,该列按name1组计算name1name2的相同频率。

因此,预期输出是以下数据帧:

name1   name2   new
A       B       2       
A       A       2
A       C       2
A       A       2
B       B       1
B       A       1

我尝试过以下操作,但收到错误:

df['new'] = df.groupby('name1').apply(lambda x: (x[x['name1'] == x['name2']].fillna(False).sum()))
  

TypeError:带有帧索引的插入列的不兼容索引

1 个答案:

答案 0 :(得分:4)

您可以将MEDIA_URL = '/media/' name1进行比较,然后按name2name1 分组进行分组:

sum

或者如果使用df['new'] = df.name2.eq(df.name1).astype(int).groupby(df.name1).transform('sum') df # name1 name2 new #0 A B 2 #1 A A 2 #2 A C 2 #3 A A 2 #4 B B 1 #5 B A 1 ,首先汇总计数,然后使用apply生成map列:

new

时序

cnt = df.groupby('name1').apply(lambda g: (g.name1 == g.name2).sum())
df['new'] = df.name1.map(cnt)