I would use pandas.concat with slicing to do this:
import pandas as pd
df = pd.DataFrame({
'ORD_DATE':['1/1/2020'],
'Weekday':[2],
'ALL Sales':[48386.27],
'ALL Pred':[20815269.83],
'Other Sales':[15386.27],
'Other Pred':[5643158.509],
})
df2 = pd.concat([
df[['ORD_DATE','Weekday','ALL Sales','ALL Pred']].rename(columns={
'ALL Sales':'Sales',
'ALL Pred':'Pred',
}),
df[['ORD_DATE','Weekday','Other Sales','Other Pred']].rename(columns={
'Other Sales':'Sales',
'Other Pred':'Pred',
}),
])
print(df2)
Output:
ORD_DATE Weekday Sales Pred
0 1/1/2020 2 48386.27 2.081527e+07
0 1/1/2020 2 15386.27 5.643159e+06
Example in python tutor
Edit With the Filter Column added:
import pandas as pd
df = pd.DataFrame({
'ORD_DATE':['1/1/2020'],
'Weekday':[2],
'ALL Sales':[48386.27],
'ALL Pred':[20815269.83],
'Other Sales':[15386.27],
'Other Pred':[5643158.509],
})
df_all = df[['ORD_DATE','Weekday','ALL Sales','ALL Pred']].rename(columns={
'ALL Sales':'Sales',
'ALL Pred':'Pred',
})
df_all['Filter'] = 'All'
df_other = df[['ORD_DATE','Weekday','Other Sales','Other Pred']].rename(columns={
'Other Sales':'Sales',
'Other Pred':'Pred',
})
df_other['Filter'] = 'Other'
df2 = pd.concat([df_all,df_other,])
print(df2)
Output:
ORD_DATE Weekday Sales Pred Filter
0 1/1/2020 2 48386.27 2.081527e+07 All
0 1/1/2020 2 15386.27 5.643159e+06 Other
python tutor link