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()