我有一组要过滤和分组的数据。对于每个唯一的ID,我想统计一个唯一的用户,IP和名称,然后将其列出。
我已经使用此行将数据过滤到所需的数据,并且我认为它可以正常工作:
df = df[df.isin(df[df.duplicated(subset=['id'], keep=False)])]
结果看起来像这样:
id user ip name
x123.blah 123 1.1.1.1 whatever
x123.blah 212 1.1.1.1 whatever
x123.blah 212 2.2.2.2 whatever
x123.blah 345 1.1.1.1 something_else
y321.blah 444 3.3.3.3 mom
y321.blah 555 3.3.3.3 mom
y321.blah 666 3.3.3.3 mom
当前,我必须将其输出为2个单独的文件,一个进行分组处理以获取每个名称的唯一值计数,另一个则是整个DF。我必须检查两者,这并不理想。
df_g = df.groupby(['id','name']).user.nunique(dropna=False).reset_index()
id name user
x123.blah whatever 2
x123.blah something_else 1
y321.blah mom 3
我想要的是这个
id name ip user
x123.blah 2 2 3
whatever 1.1.1.1, 2.2.2.2 123, 212
something_else 1.1.1.1 345
y321.blah 1 1 3
mom 3.3.3.3 444, 555, 666
GroupBy可以实现吗?我把数据透视表弄乱了,但由于非数值而出错