【发布时间】:2019-09-17 16:21:02
【问题描述】:
我正在尝试将每一行的列名放入 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
谢谢
【问题讨论】:
-
试试 df.melt()
我正在尝试将每一行的列名放入 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
谢谢
【问题讨论】:
如果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
【讨论】:
使用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
【讨论】: