我一直在尝试重新安排我的数据帧,以将其用作factorplot的输入。原始数据如下所示:
A B C D
1 0 1 2 "T"
2 1 2 3 "F"
3 2 1 0 "F"
4 1 0 2 "T"
...
我的问题是如何将其重新排列成这种形式:
col val val2
1 A 0 "T"
1 B 1 "T"
1 C 2 "T"
2 A 1 "F"
...
我在尝试:
df = DF.cumsum(axis=0).stack().reset_index(name="val")
然而,这只产生一个值列而不是两个..感谢您的支持
答案 0 :(得分:3)
我会使用融化,你可以根据自己的喜好对其进行排序
pd.melt(df.reset_index(),id_vars=['index','D'], value_vars=['A','B','C']).sort_values(by='index')
Out[40]:
index D variable value
0 1 T A 0
4 1 T B 1
8 1 T C 2
1 2 F A 1
5 2 F B 2
9 2 F C 3
2 3 F A 2
6 3 F B 1
10 3 F C 0
3 4 T A 1
7 4 T B 0
11 4 T C 2
然后显然你可以根据需要命名列
df.set_index('index').rename(columns={'D': 'col', 'variable': 'val2', 'value': 'val'})
答案 1 :(得分:1)