df1=df[['Sales_Acc1','Time_Acc1','Acc_Number_acc1']]
df2=df[['Sales_Acc2','Time_acc2','Acc_Number_acc2']]
df1.columns=['Sales_Acc','Time_Acc','Acc_Number']
df2.columns=['Sales_Acc','Time_Acc','Acc_Number']
df3 = df1.append(df2)
df3.index.names = ['Rep']
Мое решение так же просто, как и это, и оно будет работать в этом случае, мы в основном помещаем столбцы в разные строки.
Сначала выбираем соответствующие столбцы, затем переименовываем имена столбцов и добавляем их в другой, чтобы получить окончательный результат.
Это полный код:
import pandas as pd
df = pd.DataFrame({"Sales_Acc1":[100,300],
"Sales_Acc2":[200,500],
"Time_Acc1":[2,5],
"Time_acc2":[6,9],
"Acc_Number_acc1":[1001,1005],
"Acc_Number_acc2":[1009,1010]},
index=["John","Dave"])
df1=df[['Sales_Acc1','Time_Acc1','Acc_Number_acc1']]
df2=df[['Sales_Acc2','Time_acc2','Acc_Number_acc2']]
df1.columns=['Sales_Acc','Time_Acc','Acc_Number']
df2.columns=['Sales_Acc','Time_Acc','Acc_Number']
df3 = df1.append(df2)
df3.index.names = ['Rep']
df3.head()
Вывод: