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

颠倒交叉表或频率表

  •  2
  • piRSquared  · 技术社区  · 5 年前

    假设我有一个频率表 df 定义为:

    dat = [[0, 2, 1], [1, 0, 3], [4, 1, 1]]
    idx = pd.Index([*'abc'], name='One')
    col = pd.Index([*'xyz'], name='Two')
    df = pd.DataFrame(dat, idx, col)
    
    df
    
    Two  x  y  z
    One         
    a    0  2  1
    b    1  0  3
    c    4  1  1
    

    pre_df

       One Two
    0    a   y
    1    a   y
    2    a   z
    3    b   x
    4    b   z
    5    b   z
    6    b   z
    7    c   x
    8    c   x
    9    c   x
    10   c   x
    11   c   y
    12   c   z
    

    这样 pd.crosstab(pre_df.One, pre_df.Two) 会让我回到 测向

    Two  x  y  z
    One         
    a    0  2  1
    b    1  0  3
    c    4  1  1
    
    1 回复  |  直到 5 年前
        1
  •  3
  •   Quang Hoang    5 年前

    尝试 stack repeat :

    s = df.stack()
    s.index.repeat(s).to_frame().reset_index(drop=True)
    

       One Two
    0    a   y
    1    a   y
    2    a   z
    3    b   x
    4    b   z
    5    b   z
    6    b   z
    7    c   x
    8    c   x
    9    c   x
    10   c   x
    11   c   y
    12   c   z