将pandas数据框中的一列拆分成多个列的最有效方法

3
例如,我有一个数据框的列('x')包含列表作为值。
import pandas as pd
jk = pd.DataFrame()
jk['x'] = [[1, 2, 3], [1, 4, 2], [27, 1, 3]]

我使用以下代码将值分成列,像这样。然而,我的实际数据集非常大。每个列表中有大约80,000行和16个值。有更有效的方法吗?

jk1 = pd.DataFrame(jk.x.values.tolist(), columns=['a','b','c'])

enter image description here


在pandas中使用列表总是很慢。为什么不可以一开始就改变创建数据框时的列表位置呢?在这里,改变创建jk的位置,使其不成为列表列。 - Space Impact
1个回答

0

没有更有效的方法

你应该避免一开始就创建一系列列表。一旦这样做,你就会得到一个带有嵌套指针层的object dtype系列。一层指向每个列表,另一层指向每个列表中的单个元素。这将阻止矢量化操作。


@jezrael,也许您误读了问题(或者是我误读了)..起点是一系列列表。将其扩展为常规数据框不是可向量化的过程。因为您开始使用指向更多指针的容器的指针。转换后,当然,您可以利用矢量化。 - jpp
@jezrael,随意添加答案。如果你是正确的,我会删除这个 :)。 - jpp
1
@jezrael,是的,这就是OP所想的。他正在寻求比jk.x.values.tolist()高效的解决方案。我看不出有什么更好的方法。 - jpp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接