我使用以下代码将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
答案 0 :(得分:1)
apply(pd.Series)
可能既慢又昂贵,所以我建议使用tolist
和DataFrame
构造函数调用来提高效率。您还可以在 列上执行重命名,这样您就不必不必要地创建数据框的新副本。
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
返回而另一个副本应该更快。