根据条件计算唯一ID-熊猫

时间:2018-11-12 20:35:47

标签: python pandas

我有一个数据集,其中包含一堆唯一的ID,并希望获得一个数值计数,这些ID中的多少个在“内容”列中同时包含“原始”和“复制”。另外,我将如何跨多个列执行此操作?

我知道如何在excel中做到这一点,但对python来说还很陌生,所以任何帮助都将非常有用!

df:

user_id  content_type  status
1234     original      pending
1234     copy          blocked
4321     original      blocked
4321     original      distributed
5678     original      blocked
5678     copy          pending

输出:

原始+复制= 2

原始+待处理= 1

原始+阻止= 2

等等。

1 个答案:

答案 0 :(得分:0)

具有“副本”的组:

sum(df.groupby('user_id').apply(lambda x: 'copy' in x['content_type'].unique()))

(具有“ copy”的行的总和; True = 1和False = 0)

df.groupby('user_id').apply(lambda x: x[x['content_type']=='copy']).shape[0]

status计:

df[df['content_type'] == 'original'].groupby('status').size()

status
blocked        2
distributed    1
pending        1

或者如果您想同时计算原件和副本,

df.groupby(['content_type','status']).size()

content_type  status     
copy          blocked        1
              pending        1
original      blocked        2
              distributed    1
              pending        1
dtype: int64