0

I have a database that expands horizontally with different lengths.

Example Data

Database Goal

I have a for loop that works and iterates through and appends each set to a new row in a new dataframe, however the data set is growing increasingly larger and this is slowing down. I've tried melt, wide_to_long, stack across several other threads. I tend to lose the data or cannot pivot out the melt to the needed columns.

I thought I had previously found a similar problem on stack overflow of address history, but can no longer find it. This is my current for loop that works and gives the results needed.

def df_transpose(df):
    new_df = []
    
    for index, row in df.iterrows():
        ID = row.loc['User ID']
        

        i = 0
        while True:

            try:
                Street = row.loc['Address.{}.Street'.format(i)]

            except KeyError:
                break
            # if we encounter another kind of error, raise it. it's helpful to see
            except Exception as e:
                raise e

            City = row.loc['Address.{}.City'.format(i)]  
            State = row.loc['Address.{}.State'.format(i)]  

            position = i


            new_df.append([ID, Street, City, State, position])
            i += 1
Robert
  • 7,394
  • 40
  • 45
  • 64

0 Answers0