pandasdataframedynamic-columns

Create Dataframe Columns Automatically with Different Names


How can I create dataframe columns automatically with different names

I have this code

df=pd.DataFrame(columns=['A']*5)
df.loc[len(df)]=[1,2,3,4,5]

Which gives the result

   A  A  A  A  A
0  1  2  3  4  5

And I want the column names to be

   A1  A2  A3  A4  A5
0  1   2   3   4   5

Solution

  • If possible pass to DataFrame correct columns names:

    df=pd.DataFrame(columns=[f'A{i}' for i in range(1, 6)])
    df.loc[len(df)]=[1,2,3,4,5]
    print (df)
      A1 A2 A3 A4 A5
    0  1  2  3  4  5
    

    If need change values later with enumerate all columns names use:

    df=pd.DataFrame(columns=['A']*5)
    
    s = df.columns.to_series()
    df.columns += s.groupby(s).cumcount().add(1).astype(str)
    df.loc[len(df)]=[1,2,3,4,5]
    
    print (df)
      A1 A2 A3 A4 A5
    0  1  2  3  4  5
    

    df=pd.DataFrame(columns=['A']*2 + ['B'] * 2 + ['C'])
    
    s = df.columns.to_series()
    
    df.columns += s.groupby(s).cumcount().add(1).astype(str)
    
    df.loc[len(df)]=[1,2,3,4,5]
    
    print (df)
      A1 A2 B1 B2 C1
    0  1  2  3  4  5