我有一个数据集,其中包含一堆唯一的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
等等。
答案 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