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

按N列或N行分组数据帧[闭合]

  •  4
  • luca  · 技术社区  · 7 年前

    我想找到一个通用的解决方案,通过指定数量的行或列对数据帧进行分组。数据帧示例:

    df = pd.DataFrame(0, index=['a', 'b', 'c', 'd', 'e', 'f'], columns=['c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7'])
    
       c1  c2  c3  c4  c5  c6  c7
    a   0   0   0   0   0   0   0
    b   0   0   0   0   0   0   0
    c   0   0   0   0   0   0   0
    d   0   0   0   0   0   0   0
    e   0   0   0   0   0   0   0
    f   0   0   0   0   0   0   0
    

    例如,我想一次按2行分组,并应用一个函数,如mean或类似函数。我还想知道如何一次按N列分组并应用函数。

       c1  c2  c3  c4  c5  c6  c7
    0   0   0   0   0   0   0   0
    1   0   0   0   0   0   0   0
    2   0   0   0   0   0   0   0
    

       0  1  2  3
    a  0  0  0  0
    b  0  0  0  0
    c  0  0  0  0
    d  0  0  0  0
    e  0  0  0  0
    f  0  0  0  0
    
    1 回复  |  直到 7 年前
        1
  •  9
  •   luca    7 年前

    这按N行分组

    >>> N=2
    
    >>> df.reset_index(drop=True).groupby(by=lambda x: x/N, axis=0).mean()
       c1  c2  c3  c4  c5  c6  c7
    0   0   0   0   0   0   0   0
    1   0   0   0   0   0   0   0
    2   0   0   0   0   0   0   0
    

    >>> df.groupby(np.arange(len(df.index))//N, axis=0).mean()
       c1  c2  c3  c4  c5  c6  c7
    0   0   0   0   0   0   0   0
    1   0   0   0   0   0   0   0
    2   0   0   0   0   0   0   0
    

    这按N列分组

    >>> df.groupby(np.arange(len(df.columns))//N, axis=1).mean()
       0  1  2  3
    a  0  0  0  0
    b  0  0  0  0
    c  0  0  0  0
    d  0  0  0  0
    e  0  0  0  0
    f  0  0  0  0