合并数据帧列表以创建一个数据帧

Jos*_*osh 11 python python-3.x pandas

我有18个数据框的列表:

dfList = [df1, df2, df3, df4, df5, df6.....df18]
Run Code Online (Sandbox Code Playgroud)

所有数据框都有一个共同的id列,因此很容易将它们与pd.merge 2一起连接在一起.有没有办法一次性加入它们,以便dfList作为单个数据帧返回?

jez*_*ael 18

我认为你需要concat,但首先DataFrame通过公共列设置每个索引:

dfs = [df.set_index('id') for df in dfList]
print pd.concat(dfs, axis=1)
Run Code Online (Sandbox Code Playgroud)

如果需要加入merge:

df = reduce(lambda df1,df2: pd.merge(df1,df2,on='id'), dfList)
Run Code Online (Sandbox Code Playgroud)

  • pd.concat(dfList,axis = 1)将它们全部合并,但是每个df都有自己的行(因此每个id重复18次) (2认同)