如何通过列名标记行

时间:2019-04-29 03:37:03

标签: python pandas

我试图将每一行的列名放在pandas数据框中。为了说明,我的数据就像

A | B | C
1 | 4 | 7
2 | 5 | 8
3 | 6 | 9

尝试转换为:


A 1
A 2
A 3
B 4
B 5
B 6
C 7
C 8

谢谢

2 个答案:

答案 0 :(得分:1)

使用df.melt

print(df.melt())

或使用pd.melt

print(pd.melt(df))

两者均重现:

  variable  value
0        A      1
1        A      2
2        A      3
3        B      4
4        B      5
5        B      6
6        C      7
7        C      8
8        C      9

答案 1 :(得分:0)

如果x是您的data-frame,如下所示:

import pandas as pd

x= pd.DataFrame ([[1,4,5],[2,5,8],[3,6,9]])
x.columns = ['A','B','C']
print(x)

   A  B  C
0  1  4  5
1  2  5  8
2  3  6  9

首先,您应该append value of xcolumns of x在两个单独的列表中,例如ab

a = []
b = []

for i in range(0,len(x)):
    for j in range(0,len(x.columns)):
        a.append(x.iloc[i][j])
        b.append(x.columns[j]) 
print(a)
print(b)
[1, 4, 5, 2, 5, 8, 3, 6, 9]
['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C']

现在,a是您想要的列表,b是a的索引。因此,您可以通过以下方式构建数据框架:

f= pd.DataFrame(a)
f.index=b

如果要对其进行排序,可以尝试以下代码:

print(f.sort_index())

A  1
A  2
A  3
B  4
B  5
B  6
C  5
C  8
C  9