Python:如何执行字符串的内容作为对象的属性

时间:2015-09-09 00:10:54

标签: python exec

我尝试过运行此代码:

for col1 in df.columns:
    for col2 in df.columns:
        if col1 != col2:
            print col1 + ' and ' + col2
            gb = df.groupby(col1)
            run_line = 'gb.' +  col2 + '.value_counts()'
            count = exec run_line
            print count

我收到此错误:

 File "<ipython-input-21-6bcce6d6c562>", line 7
    count = exec run_line
               ^
SyntaxError: invalid syntax

任何帮助我如何存储

的结果
exec run_line

或如何运行

gb.col2.value_counts()

使用变量col2的内容

1 个答案:

答案 0 :(得分:1)

通常,您希望避免使用exec。幸运的是,你没有需要 exec。如果您只需要访问在运行时之前未指定的对象的属性,请使用getattr

for col1 in df.columns:
    for col2 in df.columns:
        if col1 != col2:
            print col1 + ' and ' + col2
            gb = df.groupby(col1)
            col2_attr = getattr(gb, col2)
            count = col2_attr.value_counts()

请注意,如果AttributeError没有col2_attr方法,最后一行会引发value_counts