pandas_get_good
pandas_get_good

Reputation: 89

python function input into string

How can I write a function that takes in a variable and use the name of the variable to assign it as a string?

def one_function(dataframe):

    <does some numeric operation...>

    print('dataframe')

so for example

df_wow=pd.DataFrame([1,2,3])

one_function(df_wow)
'df_wow'

Different_data_frame=pd.DataFrame([99,98,100])
one_function(Different_data_frame)
'Different_data_frame'

EDIT

After doing some more research and with the comments and replies I came to the conclusion that it can't be done. I got around this by just passing another argument

def one_function(dataframe,name_arg):
    <does some numeric operation...>

    print(name_arg)

My end goal here was actually to name the index of the data frame. So actually I ended up writing the following function

def one_function(dataframe,name_arg):

    <does some numeric operation...>

    dataframe.index.name=name_arg
    return(dataframe)

Upvotes: 0

Views: 912

Answers (1)

Johannes
Johannes

Reputation: 3388

No you cant, when passing a parameter only the value of the parameter is passed (copied) to the function.

However, you can achieve something similar if you use keyword arguments:

In [1]: def one_function(**kwargs):
   ...:     print(kwargs.keys()[0])
   ...:     

In [2]: one_function(foo=5)
foo

This example prints one (random) argument, if you have more than one you can loop through the .keys() list and print them all or do whatever you want with them.

Upvotes: 1

Related Questions