将参数作为函数中的属性传递?

时间:2016-05-31 15:32:25

标签: python function pandas

我正在尝试编写一个函数,该函数将非变量引入函数。我通常不会编写函数,但正如我所知,我正在尝试使我的脚本更加Pythonic并节省时间。

示例:

source = pd.DataFrame(
    {
        'Name': ['John', 'Mike', 'John', 'John'],
        'Year': ['1999', '2000', '2000', '2000'],
        'Message': ['I Love You', 'Will Remember You', 'Love', 'I Love You']
    }
)

def unstack(df, keyword):
    d = (df.keyword.str.split(expand=True).stack)

unstack(source, year)

我想要的是:

d = (df.year.str.split(expand=True).stack)

我知道将有效密钥传递给函数是很常见的,但我试图让函数接受参数并将其用作密钥。

希望你明白这一点。

1 个答案:

答案 0 :(得分:2)

要获取fixed的{​​{1}}属性,请使用:

keyword

因此:

df

但是,最好只做这部分调用约定:

getattr(df, keyword)

而不是

def unstack(df, keyword):
    d = getattr(df, keyword).str.split(expand=True).stack