簡體   English   中英

反轉交叉制表或頻率表

[英]Reverse a Cross Tabulation or Frequency Table

假設我有一個頻率表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)會讓我回到df

Two  x  y  z
One         
a    0  2  1
b    1  0  3
c    4  1  1

嘗試stackrepeat

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM