我得到一个数据框
df
A B
0 1 4
1 2 5
2 3 6
为了进一步处理,重新调整df会更方便 如下:
letters numbers
0 A 1
1 A 2
2 A 3
3 B 4
4 B 5
5 B 6
我怎样才能做到这一点?
答案 0 :(得分:2)
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 :(得分: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