Python 改变数据帧的结构
是否有可以在以下数据帧之间交换的函数(Python 改变数据帧的结构,python,pandas,Python,Pandas,是否有可以在以下数据帧之间交换的函数(df1,df2): 数据帧df1: #df1 num type values 0 1 a 18 1 2 a 26 2 3 a 34 3 4 a 21 4 5 a 48 5 1 b 1 6 2 b 19 7 3 b 36 8 4 b 42 9
df1
,df2
):
数据帧df1:
#df1
num type values
0 1 a 18
1 2 a 26
2 3 a 34
3 4 a 21
4 5 a 48
5 1 b 1
6 2 b 19
7 3 b 36
8 4 b 42
9 5 b 30
数据帧df2:
a b num
0 18 1 1
1 26 19 2
2 34 36 3
3 21 42 4
4 48 30 5
我取第一个df
,type列成为带有变量的类型名。是否有一个函数可以做到这一点(从df1
到df2
)和vice verca动作(从df2
到df1
)您可以使用和:
a b num
0 18 1 1
1 26 19 2
2 34 36 3
3 21 42 4
4 48 30 5
print df
num type values
0 1 a 20
1 2 a 25
2 3 a 2
3 4 a 27
4 5 a 29
5 1 b 39
6 2 b 40
7 3 b 6
8 4 b 17
9 5 b 47
print df2
a b num
0 20 39 1
1 25 40 2
2 2 6 3
3 27 17 4
4 29 47 5
df1 = df2.set_index('num').stack().reset_index()
df1.columns = ['num','type','values']
df1 = df1.sort_values('type')
print df1
num type values
0 1 a 20
2 2 a 46
4 3 a 21
6 4 a 33
8 5 a 10
1 1 b 45
3 2 b 39
5 3 b 38
7 4 b 37
9 5 b 34
df3 = df.pivot(index='num', columns='type', values='values').reset_index()
df3.columns.name = None
df3 = df3[['a','b','num']]
print df3
a b num
0 46 23 1
1 38 6 2
2 36 47 3
3 33 34 4
4 15 1 5