在使用 pandas 时经常会碰到一个需求,即合并多个 DataFrame。比较遗憾的是,按现在 pandas 的设计,并不能在不产生新 DataFrame 对象的情况下把数据 append 到一个现有 的 df 中,因此如何相对有效地合并多个 df 一直是困扰我的问题。
按最通常的想法,是直接写一个循环:
for df_i in dfs:
pd.concat(df, df_i)
显然这样会额外地创建很多个临时的 df,虽然能够工作,但不是好的工作方法。
在 StackOverflow 上有人给出了一个办法,我认为相对还是比较好的,就是把所有要合并 的 df 放到一个列表中,然后用 concat 函数一次性合并:
df = pd.concat(dfs)
这样避免了产生中间临时 df。
在 pandas 开发者 Wes McKinney 最近的博客 中提到,pandas 不能很好地处理 append 这一点也一直困扰着他,而这个问题,有希望在 arrow 中得到解决。
参考.