根据两个要素对要素进行计数以生成两个新列

时间:2019-12-16 21:10:36

标签: python pandas

我一直试图基于两列生成列数 我有A列,它是从0到1000的数据,范围为0.5。 (0.5、1、1.5 ... 1000),并且B列是“是”,“否”。)

我正在尝试生成新列C(是)和D(否) 是在0.5、1等处的是和否计数。

类似

0.5    Y   
5      N
0.5    N
5      N
2      Y
3      N

将生成

0.5    Y    1   1
5      N    0   2
0.5    N    1   1
5      N    0   2
2      Y    1   0
3      N    0   1

我使用groupby:

groupby('columnA')['ColumnB']。transform('count')

但是它没有给我我想要的东西。事先用“ Y和N”将它们分开也不能完全满足我的要求。

谢谢

2 个答案:

答案 0 :(得分:2)

方法1

df=df.join( df.groupby('columnA')['columnB']
              .value_counts()
              .unstack(fill_value=0) ,on='columnA' )

print(df)

方法2

df=df.join( df.groupby(['columnA','columnB'])
              .size()
              .unstack(fill_value=0), on='columnA' )
print(df)

输出

   columnA columnB  N  Y
0      0.5       Y  1  1
1      5.0       N  2  0
2      0.5       N  1  1
3      5.0       N  2  0
4      2.0       Y  0  1
5      3.0       N  1  0

答案 1 :(得分:0)

这应该为您工作

data.groupby(['columnA', 'columnB']).count()