将索引作为循环变量连接多个数据帧

时间:2017-07-26 15:01:41

标签: pandas indexing

我通过for循环创建多个数据帧并将它们连接起来,这很好。但我需要将循环变量包含为索引。我找不到将循环变量设置为索引

的方法
maindf=pd.DataFrame()
for i in ['20170724','20170725','20170726']:
    a=pd.read_csv("somecsv."+str(i))
    maindf = pd.concat(maindf,a,axis=0)

maindf的预期OP:

         A  B  C
20170724 1  2  3
         4  5  6
         7  8  9
20170725 11 22 33
         44 55 66
         77 88 99
20170725 111 222 333
         444 555 666
         777 888 999

2 个答案:

答案 0 :(得分:3)

我认为您需要将所有DataFrame附加到list,然后将concat添加到参数keys,同时删除带参数的第二级添加reset_index drop

dfs = []
vals = ['20170724','20170725','20170726']
for i in vals:
    a=pd.read_csv("somecsv."+str(i))
    dfs.append(a)
maindf = pd.concat(dfs,keys=vals).reset_index(level=1, drop=True)

答案 1 :(得分:1)

您可以在字典上使用pd.concat

lst = ['20170724','20170725','20170726']
pd.concat({k: pd.read_csv('somecsv.{}'.format(i)) for k in lst})