hydesingh
hydesingh

Reputation: 47

create dynamic column names in pandas

I am trying to create multiple dataframes inside a for loop using the below code:

for i in range(len(columns)):
   f'df_v{i+1}' = df.pivot(index="no", columns=list1[i], values=list2[i])

But I get the error "Cannot assign to literal". Not sure whether there is a way to create the dataframes dynamically in pandas?

Upvotes: 0

Views: 556

Answers (1)

Ralubrusto
Ralubrusto

Reputation: 1501

This syntax

f'df_v{i+1}' = df.pivot(index="no", columns=list1[i], values=list2[i])

means that you are trying to assign DataFrames to a string, which is not possible. You might try using a dictionary, instead:

my_dfs = {}

for i in range(len(columns)):
  my_dfs[f'df_v{i+1}'] = df.pivot(index="no", columns=list1[i], values=list2[i])

Since it allows the use of named keys, which seems like what you want. This way you can access your dataframes using my_dfs['df_v1'], for example.

Upvotes: 1

Related Questions