动态创建数据帧

时间:2017-11-15 12:30:21

标签: python pandas

我在一个文件夹中有一组csv文件,我想创建一个与csv文件同名的动态数据帧

例如我有以下文件:AC201703.csv AC201703.csv AC201704.csv 我想将这些文件加载​​到具有相同名称的数据帧中,例如AC201703 AC201704 我尝试使用exec,如下面的

for file in glob.glob("*.csv"):
   df = pd.read_csv(file,encoding = 'ISO-8859-1' )
   exec("%s = %s" % (file[:7],df)) 

但它没有用,我收到以下错误

  File "<ipython-input-31-2d670638b427>", line 4, in <module>
    exec("%s = %s" % (file[:7],df))

  File "<string>", line 1
    A201610 =        A201610_fb_act_n_n_buy cust_key  A201610_fb_act_n_n LCELGST  \
                                                   ^
SyntaxError: invalid syntax

它似乎为变量A201610分配了csv列的名称

1 个答案:

答案 0 :(得分:3)

我认为更好的是使用dict of DataFrames

d = {file[:7] : pd.read_csv(file, encoding = 'ISO-8859-1') for file in glob.glob("*.csv")}

然后按键选择DataFrame - 文件名前7个字母:

print (d['AC20170'])

但如果不想使用dict s:

for file in glob.glob("*.csv"):
    globals()[file[:7]] = pd.read_csv(file,encoding = 'ISO-8859-1')

print (AC20170)