在 Python 中将列表中的值作为 pandas 数据框中的列值的可扩展方法

我有一个 pandas 数据框,它只有一列,该列中每个单元格的值是一个数字列表/数组,该列表的长度为 100,并且该长度在所有单元格值中都是一致的。

我们需要将每个列表值转换为列值,换句话说,有一个包含 100 列的数据框,每个列值都位于列表/数组项中。

像这样的东西 

https://img1.sycdn.imooc.com/652f8a8d00016a4301820084.jpg

变成

https://img1.sycdn.imooc.com/652f8a980001d4ea03150073.jpg

可以使用 iterrows() 来完成,如下所示,但我们有大约 150 万行,需要一个可扩展的解决方案,因为 iterrows() 会花费大量时间。


cols = [f'col_{i}' for i in range(0, 4)]

df_inter = pd.DataFrame(columns = cols)

for index, row in df.iterrows():

    df_inter.loc[len(df_inter)] = row['message']


慕雪6442864
浏览 90回答 2
2回答

守候你守候我

你可以这样做:In [28]: df = pd.DataFrame({'message':[[1,2,3,4,5], [3,4,5,6,7]]})In [29]: dfOut[29]:            message0  [1, 2, 3, 4, 5]1  [3, 4, 5, 6, 7]In [30]: res = pd.DataFrame(df.message.tolist(), index= df.index)In [31]: resOut[31]:    0  1  2  3  40  1  2  3  4  51  3  4  5  6  7

慕妹3146593

我认为这会起作用:df.message.apply(pd.Series)要使用 dask 进行扩展(假设已安装):import dask.dataframe as ddddf = dd.from_pandas(df, npartitions=8)ddf.message.apply(pd.Series, meta={0: 'object'})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python