我一直试图基于两列生成列数 我有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”将它们分开也不能完全满足我的要求。
谢谢
答案 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()