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

使用groupby时熊猫的计算模式

  •  1
  • D_M  · 技术社区  · 7 年前

    我有一张桌子如下:

    Col1 | Col2 | Col3
    AAA  | 1    | a
    AAA  | 1    | a
    AAA  | 1    | b
    AAA  | 2    | b
    AAA  | 2    | b
    AAA  | 2    | b
    AAA  | 3    | a
    BBB  | 1    | b
    BBB  | 1    | b
    

    我想通过以下两个步骤减少表格:

    1. 在对应于(col1,col2)值对的col3中找到最频繁出现的值。

    2. 从步骤1的结果来看,只保留与col1值相对应的最频繁出现的值。

    将步骤1应用于上表: 对应于 (AAA, 1) a 等等。我们得到:

    Col1 | Col2 | newCol1
    AAA  | 1    | a
    AAA  | 2    | b
    AAA  | 3    | a
    BBB  | 1    | b
    

    将步骤2应用于此表,我们看到 模式是否与 AAA b 是与 BBB 所以我们得到:

    Col1 | newCol2
    AAA  | a  
    BBB  | b
    
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   anky    7 年前

    你的意思是:

    df_new=df.groupby(['Col1','Col2'])['Col3'].apply(lambda x:x.mode()).reset_index([0,1]).\
    groupby('Col1')['Col3'].apply(lambda x: x.mode()).reset_index(0).reset_index(drop=True)
    print(df_new)
    
      Col1   Col3
    0  AAA      a
    1  BBB      b