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