如何腌制多个熊猫数据框并在单个命令中将所有它们串联

时间:2019-05-06 21:21:59

标签: python pandas dataframe

Files =['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
fout='/PATH/df/{}/{}.F.K.df'.format('train',Files[0])
df1=pd.read_pickle(fout)
df1 = df1[df1.columns[:100]]

fout='/PATH/df/{}/{}.F.K.df'.format('train',Files[1])
df2=pd.read_pickle(fout)
df2 = df2[df2.columns[:100]]

fout='/PATH/df/{}/{}.F.K.df'.format('train',Files[2])
df3=pd.read_pickle(fout)
df3 = df3[df3.columns[:100]]

fout='/PATH/df/{}/{}.F.K.df'.format('train',Files[3])
df4=pd.read_pickle(fout)
df4 = df4[df4.columns[:100]]

fout='/PATH/df/{}/{}.F.K.df'.format('train',Files[4])
df5=pd.read_pickle(fout)
df5 = df5[df5.columns[:100]]

fout='/PATH/df/{}/{}.F.K.df'.format('train',Files[5])
df6=pd.read_pickle(fout)
df6 = df6[df6.columns[:100]]

fout='/PATH/df/{}/{}.F.K.df'.format('train',Files[6])
df7=pd.read_pickle(fout)
df7 = df7[df7.columns[:100]]

fout='/PATH/df/{}/{}.F.K.df'.format('train',Files[7])
df8=pd.read_pickle(fout)
df8 = df8[df8.columns[:100]]

df = pd.concat([df1, df2, df3, df4, df5, df6, df7, df8], axis = 1)
df = df.loc[:,~df.columns.duplicated()]

我有以下这些命令,并且前8个块都是重复的代码,只做了很小的修改。我有办法做到这一点吗?

[pd.read_pickle('/PATH/df/{}/{}.F.K.df'.format('train',Files[i])) for i in Files]

但是这给了我很多数据帧,这些数据帧将被设置为相同的变量,而且我不知道如何将其映射到8个不同的数据帧,然后一次性将它们全部合并。

1 个答案:

答案 0 :(得分:3)

您的问题是您正在创建任意数量的变量,这些变量是不需要的。使用Files将DataFrame读入列表,然后将其连接。

df = pd.concat([pd.read_pickle('/PATH/df/{}/{}.F.K.df'.format('train', f)).iloc[:, :100] 
                for f in Files], 
               axis=1)