[SOLVED] Pass the name of the dataframe into each for row for a new column in a list of dataframes Python

Issue

This Content is from Stack Overflow. Question asked by Spooked

I have a list of dataframes, I want to add a new column to each dataframe that is the name of the dataframe.

df_all = [df1,df2,df3]

for df in df_all:
    df["Loc"] = df[df].astype.(str)

Boolean array expected for the condition, not object

is this possible to achieve?



Solution

You can’t do this, python objects have no possibility to know their name(s).

You could emulate it with:

df_all = [df1, df2, df3]

for i, df in enumerate(df_all, start=1):
    df['Loc'] = f'df{i}'

Alternatively, use a dictionary:

df_all = {'df1': df1, 'df2': df2, 'df3': df3}

for k, df in df_all.items():
    df['Loc'] = k


This Question was asked in StackOverflow by Spooked and Answered by mozway It is licensed under the terms of CC BY-SA 2.5. - CC BY-SA 3.0. - CC BY-SA 4.0.

people found this article helpful. What about you?