我需要您的帮助来修改以下数据框
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
答案 0 :(得分:2)
使用:
set_index
列day
rsplit
的最后_
列拆分并创建Multiindex
stack
sort_index
和上次reset_index
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