我试图将每一行的列名放在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
谢谢
答案 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 x
和columns of x
在两个单独的列表中,例如a
和b
:
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