Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何将字符串的内容作为对象的属性执行_Python_Exec - Fatal编程技术网

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

Python:如何将字符串的内容作为对象的属性执行,python,exec,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_l

我已尝试运行以下代码:

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
或者我怎么跑

gb.col2.value_counts()

使用变量col2的内容通常要避免使用
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()

请注意,如果
col2\u attr
没有
value\u counts
方法,则最后一行将引发一个
AttributeError

Good!这就成功了。我对蟒蛇很陌生,对熊猫也很陌生。
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()