'How to rearrange table in Pandas

I have a table look like this in DataFrame:

couriers delivery price_list
Alfred Locker 2 day(s) HKD $20
Hongkong Post 2 day(s) HKD $50
ZTO Express (To-Point) 2 day(s) HKD $20
Zeek2Door (To Home) 2 day(s) HKD $40
Kerry Express 2 day(s) HKD $30

I would like to rearrange the table like below:

couriers_1 delivery_1 price_list_1 couriers_2 delivery_2 price_list_2 couriers_3 delivery_3 price_list_3 couriers_4 delivery_4 price_list_4 couriers_5 delivery_5 price_list_5
Alfred Locker 2 day(s) HKD $20 Hongkong Post 2 day(s) HKD $50 ZTO Express (To-Point) 2 day(s) HKD $20 Zeek2Door (To Home) 2 day(s) HKD $40 Kerry Express 2 day(s) HKD $30

How can I use Pandas to solve this? I can't figure it out!

Data:

{'couriers': ['Alfred Locker',
  'Hongkong Post',
  'ZTO Express (To-Point)',
  'Zeek2Door (To Home)',
  'Kerry Express'],
 'delivery': ['2 day(s)', '2 day(s)', '2 day(s)', '2 day(s)', '2 day(s)'],
 'price_list': ['HKD $20', 'HKD $50', 'HKD $20', 'HKD $40', 'HKD $30']}


Solution 1:[1]

So if you have a loop iterate over every element then use concat of pandas to attach each of them in order to form the data frame .

import pandas as pd

df = pd.DataFrame(zip(
["couriers", "Alfred Locker","Hongkong Post","ZTO Express(To-Point)","Zeek2Door(To Home)","Kerry Express"],
["delivery","2 day(s)","2 day(s)","2 day(s)","2 day(s)","2 day(s)"],
["price_list","HKD $20","HKD $50","HKD $20","HKD $40","HKD $30"],
))

counter_str = 1
#initialzing the df_result
df_result = ""
#iterating over the length so that we can add it to the string


for x in range(1,len(df)):
    for i in df:
        df_local = pd.DataFrame({df[i][0]+"_"+ str(x) : [df[i][counter_str]]})
        if len(df_result)>0:
            df_result = pd.concat([df_result,df_local], axis = 1, join='inner')
        else:
            df_result = df_local
    counter_str+=1

print(df_result)
             

Output:

    couriers_1 delivery_1 price_list_1  ...     couriers_5 delivery_5 price_list_5
0  Alfred Locker   2 day(s)      HKD $20  ...  Kerry Express   2 day(s)      HKD $30

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1