Python:自定义函数,可根据变量名称动态命名数据框

时间:2018-12-19 14:32:18

标签: python function dataframe return exec

我想创建与变量名同名的数据框。我创建了以下函数:

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)

1 个答案:

答案 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?