我想创建与变量名同名的数据框。我创建了以下函数:
def path_to_df(path):
filename=str(path).split('/')[-1]
allFiles = glob.glob(path + "/*.csv.gz")
list_=[]
for file_ in allFiles:
df = pd.read_csv(file_,index_col=None, header=0)
list_.append(df)
frame = pd.concat(list_, axis = 0, ignore_index = True)
frame.columns = [str(filename)+ '_' +str(col) for col in frame.columns]
exec('{}_df=frame'.format(filename))
print('Completed: {}_df'.format(filename))
该功能的每个步骤均有效,但以下步骤除外:
exec('{}_df=frame'.format(filename))
运行代码时没有错误。该函数返回'frame',但不返回自定义数据帧(即{} _df)
答案 0 :(得分:1)
我不确定您为什么不想为此使用字典,但是为了回答这个问题,您可以修改当前模块以使用sys
和{{ 1}}就是这样
setattr
不过,您几乎绝对还是要使用import sys
# Now instead of exec'ing
setattr(sys.modules[__name__], '{}_df'.format(filename), frame)
来代替。看到以下问题:How can you dynamically create variables via a while loop?