2017-04-26 131 views
1

我得到一个数据帧重新排列数据帧结构

df 
    A B 
0 1 4 
1 2 5 
2 3 6 

作进一步处理,这将是有DF restructered 如下更方便:

letters numbers 
0 A  1 
1 A  2 
2 A  3 
3 B  4 
4 B  5 
5 B  6 

我怎样才能做到这一点?

回答

2

使用unstackreset_index

df = df.unstack().reset_index(level=1, drop=True).reset_index() 
df.columns = ['letters','numbers'] 
print (df) 
    letters numbers 
0  A  1 
1  A  2 
2  A  3 
3  B  4 
4  B  5 
5  B  6 

或者numpy.concatenate + numpy.repeat + DataFrame

a = np.concatenate(df.values) 
b = np.repeat(df.columns,len(df.index)) 
df = pd.DataFrame({'letters':b, 'numbers':a}) 
print (df) 
    letters numbers 
0  A  1 
1  A  4 
2  A  2 
3  B  5 
4  B  3 
5  B  6 
1

也许最简单的melt

In [36]: pd.melt(df, var_name="letters", value_name="numbers") 
Out[36]: 
    letters numbers 
0  A  1 
1  A  2 
2  A  3 
3  B  4 
4  B  5 
5  B  6