Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pd.melt将列转换为两个独立的变量值列_Python_Pandas_Melt - Fatal编程技术网

Python 使用pd.melt将列转换为两个独立的变量值列

Python 使用pd.melt将列转换为两个独立的变量值列,python,pandas,melt,Python,Pandas,Melt,我正试图以这种方式融化这个数据帧 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']}) pd.melt(df,id\u vars=['id','C'])将创建单个变量和值列,但如何实现上述结果?这更像是一个从宽到长的问题 ID C varia

我正试图以这种方式融化这个数据帧

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']})

pd.melt(df,id\u vars=['id','C'])
将创建单个变量和值列,但如何实现上述结果?

这更像是一个从宽到长的
问题

    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  

谢谢@WeNYoBen,效果很好(+1)。然而,在我的真实数据集中,变量的命名如下:
df=pd.DataFrame({'ID':[1,2,3,4,5,6],'abc_-tac':[1,2,3,4,5,6],'ght_-tac':[3,4,5,6,7,7,8],'abc_-toc':[6,5,4,3,2,1],'C':[x','x','x','y','y','y',
。你会如何处理这个案子?
tac
toc
相当于my中的
1
2
question@HappyPy将
sep=''.
suffix='.*.
作为参数传递给
wide\u to\u long
@HappyPyH,我想Alolz会很好地解释和回答你的问题:-)
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