按数据框分组并拆分为列

  • 本文关键字:拆分 数据 python pandas
  • 更新时间 :
  • 英文 :


下面是数据框的输出,我可以发布

df2 = df.groupby(['id1','id2']).size().reset_index()
df2.columns = ['id1','id2','Count']
print (df2)

id1                         id2                  Count
7780379  00000000-0000-0000-0000-000000000000      1
7780379  72b9f501-6d48-4a37-8f3a-ff4e5fb6ec8d     19

我试图添加条件是属于0000000- 0000000- 0000000- 0000000- 000000000000的任何id2是无效计数,以下是预期结果

id1    ValidCount  InvalidCount
7780379      19         1

如果有什么建议请分享。

使用groupby_sum:

out = df.groupby(['id1', df['id2']!='00000000-0000-0000-0000-000000000000'])['Count'] 
.sum().unstack().rename(columns={True: 'ValidCount', False: 'InvalidCount'})

输出:

>>> out
id2      InvalidCount  ValidCount
id1                              
7780379             1          19

可以直接从df得到最终输出,而不需要df2:

valids = np.where(df['id2']=='00000000-0000-0000-0000-000000000000', 
'InvalidCount', 'ValidCount')
df.groupby(['id1', valids]).size().unstack('id2').reset_index()

最新更新