带有非数值数据的Pandas复杂GroupBy或Pivot

时间:2018-07-27 18:15:17

标签: python pandas pivot pivot-table pandas-groupby

我有一组要过滤和分组的数据。对于每个唯一的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可以实现吗?我把数据透视表弄乱了,但由于非数值而出错

0 个答案:

没有答案