在Pandas DF中将标题转换为一列,将多列转换为另一列:
DF:
df = pd.DataFrame(np.random.randint(0,10,size=(3,3)),columns =["2000","2001","2002" ])
df.index = pd.Index(["A","B","C"],name = "random")
df
OP:
2000 2001 2002
random
A 1 5 4
B 8 2 2
C 0 3 6
期望的操作数-唯一索引和2列:
0 1
0 2000 1
1 2000 8
2 2000 0
3 2001 5
4 2001 2
5 2001 3
6 2002 4
7 2002 2
8 2002 6
我使用df.iterrows
进行迭代,这对于一个大型DF来说要花很长时间,是否还有其他方法可以做到这一点?任何建议都会很棒。
答案 0 :(得分:1)
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,10,size=(3,3)),columns =["2000","2001","2002" ])
df.index = pd.Index(["A","B","C"],name = "random")
df=pd.melt(df, value_vars=["2000","2001","2002" ])
print(df)
# output
variable value
0 2000 5
1 2000 1
2 2000 2
3 2001 5
4 2001 4
5 2001 6
6 2002 4
7 2002 9
8 2002 3