连接大型pandas数据帧会产生MemoryError

时间:2017-09-28 07:30:29

标签: python pandas numpy out-of-memory concatenation

我使用以下代码将pandas dataframe列拆分为多个列:

df = pd.concat([df.X.apply(pd.Series).rename(columns="X{}".format), df.Y], axis=1)

显示内存错误:

  

stacked = np.empty(shape,dtype = dtype)   的MemoryError

1 个答案:

答案 0 :(得分:1)

apply(pd.Series)可能既慢又昂贵,所以我建议使用tolistDataFrame构造函数调用来提高效率。您还可以在 列上执行重命名,这样您就不必不必要地创建数据框的新副本。

y = df['Y']
df = pd.DataFrame(df.X.tolist(), index=df.index)
df.columns = list(map("X{}".format, df.columns))
df['Y'] = y

就地分配而不是pd.concat返回而另一个副本应该更快。