代码之家  ›  专栏  ›  技术社区  ›  Tez

数据帧-统计三列中具有相似(相同)变量的变量的频率

  •  0
  • Tez  · 技术社区  · 1 年前

    我有一个数据帧,在那里我将字符串变量拆分为新列,因为它们在一列中是字符串,并用“,”分隔。

    现在,我想计算三列,并汇总每个变量的频率。

    下面是我用来单独计算列的代码。

    将字符串拆分为三列

    df6 = df5.join(
            df['Key Features'].str.split(',', expand=True).rename(
            columns={0:'Key Features A', 1:'Key Features B', 2:'Key Features C'}
    
          )
         )
    

    计算单个列的变量

    df8['Key Features A'].value_counts()
    df8['Key Features B'].value_counts()
    df8['Key Features C'].value_counts()
    

    '''

    谢谢!

    1 回复  |  直到 1 年前
        1
  •  1
  •   user19077881    1 年前

    如果我理解你的要求:每个value_counts()都是一个字典,你想通过添加计数值来组合这3个字典。如果是这样,下面显示的函数通过一个简单的示例来实现:

    import pandas as pd
    
    df= pd.DataFrame({'x': [1, 2, 3, 4, 2, 3, 1],
                      'y': [1, 2, 1, 4, 2, 5, 1],
                      'z': [2, 3, 4, 1, 1,  1, 1]
                      })
    
    x= df['x'].value_counts()
    y = df['y'].value_counts()
    z = df['z'].value_counts()
    
    def combine(*a):
        s = {}
        for b in a:
            for k, v in b.items():
                s[k] = s.get(k,0) + v
        return s
        
    print(combine(x, y, z))
    

    给予:

    {1: 9, 2: 5, 3: 3, 4: 3, 5: 1}
    

    这是显示总计数的字典。