【问题标题】:python, count unique list values of a list inside a data framepython,计算数据框中列表的唯一列表值
【发布时间】:2020-11-27 16:14:54
【问题描述】:

我有一个包含两列用户反馈的数据框。

第一列来自调查的多项选择答案。该列的每一行都是他们选择的答案的列表。

下一列是年龄范围的类别。所以一行将包含用户颜色偏好和年龄范围的列表。

例如

what colours do you like?         age
['yellow','orange','green']       18-25
['yellow']                        18-25
['blue','green','red','orange']   26-30
['blue','red']                    26-30

我希望获取列表中每种颜色的单独计数,然后按年龄范围划分 所需的输出:

age    colour   count
18-25  yellow     2
18-25  orange     1
18-25  green      1
26-30  blue       2
26-30  green      1
26-30  red        2
26-30  orange     1

提前致谢!

【问题讨论】:

    标签: python pandas list split count


    【解决方案1】:

    将数据帧的索引设置为age,然后在what colours do you like?' 列上使用Series.explode,然后在level=0 上使用groupby,并使用value_counts 聚合系列:

    df1 = (
        df.set_index('age')['what colours do you like?'].explode()
        .rename('color').groupby(level=0).value_counts().reset_index(name='count')
    )
    

    结果:

    print(df1)
         age   color  count
    0  18-25  yellow      2
    1  18-25   green      1
    2  18-25  orange      1
    3  26-30    blue      2
    4  26-30     red      2
    5  26-30   green      1
    6  26-30  orange      1
    

    【讨论】:

      【解决方案2】:

      另一种选择:

      df1 = df.apply(lambda x: [str(x[0][i]) + " " + str(x[1]) for i in range(len(x[0]))], axis = 1).agg("sum")
      df1 = pd.DataFrame(np.unique(df1, return_counts = True), index = ["A","count"]).T
      df1[["colour","age"]] = df1.A.str.split(expand = True)
      df1 = df1.drop("A")
      

      它应该输出:

      df1
      
         count   age   color  
      0      2 18-25  yellow  
      1      1 18-25   green  
      2      1 18-25  orange  
      3      2 26-30    blue  
      4      2 26-30     red  
      5      1 26-30   green  
      6      1 26-30  orange  
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多