【问题标题】:pandas: how to perform group by and union together熊猫:如何进行分组和联合
【发布时间】:2020-04-18 01:09:46
【问题描述】:

我有以下格式的数据框:

     domain  c1  c2  c3  c4  c5  c6  c7  c8
      ---    --  --  --  --  --  --  --  --
0  facebook   0   1   1   0   0   0   1   0
1  facebook   1   0   0   0   0   0   1   1
2    google   1   0   0   1   0   1   0   0
3    google   0   1   0   0   1   0   0   1
4    google   0   0   0   1   1   0   0   1

domain 以外的列只能有 0 或 1 的值。 我想一起执行分组(在域上)和联合(在其余列上),以便输出显示组中每一列的值的联合。

在上面给出的示例数据中,我希望输出为:

     domain  c1  c2  c3  c4  c5  c6  c7  c8
      ---    --  --  --  --  --  --  --  --
0  facebook   1   1   1   0   0   0   1   1
1    google   1   1   0   1   1   1   0   1 

我看到的 group by 示例在一列上应用 group by,然后在其他列上应用聚合函数(sum、mean、max 等)。我无法弄清楚如何在其余列上应用联合。

import pandas as pd
from io import StringIO

data = StringIO(u'''domain,c1,c2,c3,c4,c5,c6,c7,c8
facebook,0,1,1,0,0,0,1,0
facebook,1,0,0,0,0,0,1,1
google,1,0,0,1,0,1,0,0
google,0,1,0,0,1,0,0,1
google,0,0,0,1,1,0,0,1''')

df = pd.read_csv(data)

【问题讨论】:

    标签: python pandas dataframe pandas-groupby pandas-apply


    【解决方案1】:

    怎么样

    df.groupby('domain').agg(any).astype(int)
    

    这会给你

              c1  c2  c3  c4  c5  c6  c7  c8
    domain                                  
    facebook   1   1   1   0   0   0   1   1
    google     1   1   0   1   1   1   0   1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-14
      • 2018-11-07
      • 2022-09-27
      • 1970-01-01
      • 1970-01-01
      • 2023-02-07
      • 1970-01-01
      • 2021-07-20
      相关资源
      最近更新 更多