我有一个非常简单的Pandas
dataframe
,其中每个单元格都包含一个列表。我想将列表中的每个元素拆分为它自己的列。我可以通过导出值,然后创建一个新的数据帧来实现这一点。这似乎不是一个好方法,尤其是如果我的
dataframe
在列表列之外还有一列的话。
import pandas as pd
df = pd.DataFrame(data=[[[8,10,12]],
[[7,9,11]]])
df = pd.DataFrame(data=[x[0] for x in df.values])
期望输出:
0 1 2
0 8 10 12
1 7 9 11
基于@Psidom答案的跟进:
如果我有第二栏:
df = pd.DataFrame(data=[[[8,10,12], 'A'],
[[7,9,11], 'B']])
我怎样才能不松开另一根柱子?
期望输出:
0 1 2 3
0 8 10 12 A
1 7 9 11 B
您可以执行pd。数据帧(df[col].values.tolist())
-要快得多~500倍
In [820]: pd.DataFrame(df[0].values.tolist())
Out[820]:
0 1 2
0 8 10 12
1 7 9 11
In [821]: pd.concat([pd.DataFrame(df[0].values.tolist()), df[1]], axis=1)
Out[821]:
0 1 2 1
0 8 10 12 A
1 7 9 11 B
时间安排
中等的
In [828]: df.shape
Out[828]: (20000, 2)
In [829]: %timeit pd.DataFrame(df[0].values.tolist())
100 loops, best of 3: 15 ms per loop
In [830]: %timeit df[0].apply(pd.Series)
1 loop, best of 3: 4.06 s per loop
大的
In [832]: df.shape
Out[832]: (200000, 2)
In [833]: %timeit pd.DataFrame(df[0].values.tolist())
10 loops, best of 3: 161 ms per loop
In [834]: %timeit df[0].apply(pd.Series)
1 loop, best of 3: 40.9 s per loop
您可以循环通过系列与应用()
函数,并将每个列表转换为一个系列
,这将自动扩展列表作为一个系列在列的方向:
df[0].apply(pd.Series)
# 0 1 2
#0 8 10 12
#1 7 9 11
更新:若要保留数据帧的其他列,可以将结果与要保留的列连接:
pd.concat([df[0].apply(pd.Series), df[1]], axis = 1)
# 0 1 2 1
#0 8 10 12 A
#1 7 9 11 B
我有一个Pandas DataFrame列,其中包含一个列表中的多个列表。类似于这样: 我想将列表拆分为多列,因此输出应该是这样的: 请帮我做这件事。预先感谢
如何将这列列表拆分为两列? 期望的结果:
我有一个包含字典作为元素的单列的。这是以下代码的结果: 我需要将此列拆分为尽可能多的列(我有太多的行和列,并且我无法更改函数),因此输出将是一个包含列,,的数据帧,<代码>功能50。这样做的最佳方式是什么? 一个具体而简单的例子: 但当我尝试用pd.Series或pd.DataFrame包装它时,它说如果数据是标量值,则必须提供索引。提供索引=['feature1','feature2'],我会得
问题内容: 我有这个清单(): 我想要这样的东西: 换句话说,我想使用值作为分隔符将列表拆分为子列表,以获得列表列表()。我正在寻找Java 8解决方案。我已经尝试过,但是我不确定这是我要找的东西。谢谢! 问题答案: 我目前想出的唯一解决方案是实现自己的自定义收集器。 在阅读解决方案之前,我想添加一些有关此的注释。我将这个问题更多地当作编程练习,我不确定是否可以使用并行流来完成。 因此,您必须意识
感兴趣的是在同一pyspark数据帧中将列表的这一列拆分为多列的scala-spark实现 给定该数据帧: 我想要一个新的数据帧,它包含分解值并映射到我提供的列名称: 尝试: 但它的格式错误,我不知道如何映射到我的 colNames 列表: 在上面的链接中,python的解决方案是使用列表理解: 但它没有显示如何使用提供的列名列表,因为列名只是列的索引。
问题内容: 这个问题类似于将 列表切成子列表的列表 ,但是在我的情况下,我想包括每个先前子列表的最后一个元素,作为下一个子列表的第一个元素。并且必须考虑到最后一个元素必须始终至少包含两个元素。 例如: 大小为3的子列表的结果: 问题答案: 通过简单地缩短传递到范围的“ step”参数,可以轻松地将链接的答案中的列表理解用于支持重叠的块: 这个问题的其他访问者可能没有足够的精力来处理输入 列表 (可