修改数据框从列名的第一部分获取索引

时间:2018-02-12 13:56:05

标签: python pandas dataframe

我需要您的帮助来修改以下数据框

df = pd.DataFrame(data=[[1,1,2,3,4],[2,3,4,5,6],[3,4,5,6,7]],
                  columns=['day','Sub_1_var1','Sub_1_var2','Sub_2_var1','Sub_2_var2'])

df
Out[45]: 
   day  Sub_1_var1  Sub_1_var2  Sub_2_var1  Sub_2_var2
0    1           1           2           3           4
1    2           3           4           5           6
2    3           4           5           6           7

进入df2

df2 = pd.DataFrame(data=[[1,1,2],[2,3,4],[3,4,5],
                         [1,3,4],[2,5,6],[3,6,7]],
                        columns=['day','var1','var2'],
                        index=['Sub_1','Sub_1','Sub_1','Sub_2','Sub_2','Sub_2'])

df2
Out[46]: 
       day  var1  var2
Sub_1    1     1     2
Sub_1    2     3     4
Sub_1    3     4     5
Sub_2    1     3     4
Sub_2    2     5     6
Sub_2    3     6     7

1 个答案:

答案 0 :(得分:2)

使用:

df = df.set_index('day')
df.columns = df.columns.str.rsplit('_', n=1, expand=True)
df = df.stack(0).sort_index(level=[1,0]).reset_index(level=0)
print (df)
       day  var1  var2
Sub_1    1     1     2
Sub_1    2     3     4
Sub_1    3     4     5
Sub_2    1     3     4
Sub_2    2     5     6
Sub_2    3     6     7
df.index = df.index.str[4:]
print (df)
   day  var1  var2
1    1     1     2
1    2     3     4
1    3     4     5
2    1     3     4
2    2     5     6
2    3     6     7