[英]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.