我有下面的脚本,它本身可以很好地工作,但一旦我将其全部封装到一个函数中,它就不会返回数据。 命令将根据输入数据结构进行更改。这是我想输入exec()的命令的一个示例:
cross_data=pd.crosstab(src_data['result'],[src_data['c1'],src_data['c2']],normalize='index')
这是我想要包装代码并调用的函数:
def calcct(file_path='src_data.csv', separator = ",", res_col = 'result'):
#define function
src_data = csv_import(file_path, separator) #import data
reorder_cols = reorder_columns(src_data, res_col) #work with data
head_list=list(reorder_cols.columns.values) #get dataframe headers
# create command based on headers and execute that. Should return dataframe called cross_data.
exec(crosstabcmd(head_list))
return cross_data
结果:
NameError: name 'cross_data' is not defined
我似乎找不到在函数中调用exec的正确语法。 我试图定义并传递cross_数据变量,但我只是得到了一个错误,当我这样做时,它看不到
还是有更好的办法?我需要编写2-x列名的命令,列的计数和名称是可变的
首先
您可能并不打算使用
exec
——这是一个相当低级的功能!目前还没有足够的上下文来理解如何解决这个问题。你能写出crosstabcmd
函数的样子吗错误
是因为您从未在函数
calcct
的范围内定义过名为cross_data
的变量,也就是说,您从未执行过cross_data = "something"
我要试一试
假设你有
然后,解决方案将如下所示:
相关问题 更多 >
编程相关推荐