使用 pd.melt 将列转换为两个单独的可变值列
use pd.melt to transform columns into two separate variable-value columns
df = pd.DataFrame({'ID':[1,2,3,4,5,6], 'A1':[1,2,3,4,5,6],'A2':[3,4,5,6,7,8], 'B1':[9,8,7,6,5,4], 'B2':[6,5,4,3,2,1], 'C':['x','x','x','y','y','y']})
我正在尝试以这种方式融化这个数据框
ID C variable1 value1 variable2 value2
1 x A1 1 B1 9
2 x A1 2 B1 8
3 x A1 3 B1 7
4 y A1 4 B1 6
5 y A1 5 B1 5
6 y A1 6 B1 4
1 x A2 3 B2 6
2 x A2 4 B2 5
3 x A2 5 B2 4
4 y A2 6 B2 3
5 y A2 7 B2 2
6 y A2 8 B2 1
pd.melt(df,id_vars=['ID','C'])
将创建单个变量和值列,但我怎样才能实现上述结果?
这更像是一个 wide_to_long
问题
pd.wide_to_long(df,['A','B'],i=['ID','C'],j='Number').reset_index()
ID C Number A B
0 1 x 1 1 9
1 1 x 2 3 6
2 2 x 1 2 8
3 2 x 2 4 5
4 3 x 1 3 7
5 3 x 2 5 4
6 4 y 1 4 6
7 4 y 2 6 3
8 5 y 1 5 5
9 5 y 2 7 2
10 6 y 1 6 4
11 6 y 2 8 1
df = pd.DataFrame({'ID':[1,2,3,4,5,6], 'A1':[1,2,3,4,5,6],'A2':[3,4,5,6,7,8], 'B1':[9,8,7,6,5,4], 'B2':[6,5,4,3,2,1], 'C':['x','x','x','y','y','y']})
我正在尝试以这种方式融化这个数据框
ID C variable1 value1 variable2 value2
1 x A1 1 B1 9
2 x A1 2 B1 8
3 x A1 3 B1 7
4 y A1 4 B1 6
5 y A1 5 B1 5
6 y A1 6 B1 4
1 x A2 3 B2 6
2 x A2 4 B2 5
3 x A2 5 B2 4
4 y A2 6 B2 3
5 y A2 7 B2 2
6 y A2 8 B2 1
pd.melt(df,id_vars=['ID','C'])
将创建单个变量和值列,但我怎样才能实现上述结果?
这更像是一个 wide_to_long
问题
pd.wide_to_long(df,['A','B'],i=['ID','C'],j='Number').reset_index()
ID C Number A B
0 1 x 1 1 9
1 1 x 2 3 6
2 2 x 1 2 8
3 2 x 2 4 5
4 3 x 1 3 7
5 3 x 2 5 4
6 4 y 1 4 6
7 4 y 2 6 3
8 5 y 1 5 5
9 5 y 2 7 2
10 6 y 1 6 4
11 6 y 2 8 1