重新排列数据帧结构
问题描述:
我得到一个数据帧重新排列数据帧结构
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
我怎样才能做到这一点?
答
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
答
也许最简单的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