Python 如何透视数据帧,使每列成为单元格中的列表?

Python 如何透视数据帧,使每列成为单元格中的列表?,python,pandas,Python,Pandas,我正在尝试透视此数据帧: 对于这一点: pd.DataFrame([['a', [1, 2, 3]], ['b', [4, 5, 6]]], columns=['key', 'list']) 忽略列重命名,有没有一种方法可以做到这一点,而无需对行进行迭代并将其转换为列表,然后再转换为新列 不要这样做。熊猫从来没有被设计成以系列/列的形式保存列表。你可以编造昂贵的变通办法,但这些都不是 推荐的 不建议保留系列列表的主要原因是您丢失了 使用保存在连续内存块中的NumPy数组所附带的矢量化功能。你的

我正在尝试透视此数据帧:

对于这一点:

pd.DataFrame([['a', [1, 2, 3]], ['b', [4, 5, 6]]], columns=['key', 'list'])
忽略列重命名,有没有一种方法可以做到这一点,而无需对行进行迭代并将其转换为列表,然后再转换为新列

不要这样做。熊猫从来没有被设计成以系列/列的形式保存列表。你可以编造昂贵的变通办法,但这些都不是 推荐的

不建议保留系列列表的主要原因是您丢失了 使用保存在连续内存块中的NumPy数组所附带的矢量化功能。你的系列将是 对象数据类型,它表示一系列指针,与列表非常相似。你会输的 在内存和性能方面的优势,以及对优化方法的访问

另见 支持熊猫的理由与支持NumPy的理由相同

但如果真的需要:

df1 = pd.DataFrame({'key': df.columns, 'list':[df[x].tolist() for x in df.columns]})
print (df1)
  key       list
0   a  [1, 2, 3]
1   b  [4, 5, 6]

如果我打算在那个专栏上进行计算,那么不这么做的原因似乎主要是性能不好?对吗?或者数据帧其余部分的任何计算也会很慢?我希望在单元格中设置列表的主要原因是,我可以根据其他列对数据帧进行排序,然后按顺序提取列表needed@oshi2016-是的,没错,如果想要处理大数据,这是个问题。@oshi2016-那么最终的预期产出是什么?您认为如何根据其他列对数据帧进行排序?提供的答案正是我所需要的,非常感谢在5分钟限制到期后接受。我计划根据键将此数据框与另一个数据框合并,然后根据一些标准对其进行排序以找到“前5个列表”,并提取这些列表以在数据框之外进行后期处理…根据您对答案的评论:我计划根据键将此数据框与另一个数据框合并,然后根据一些标准对其进行排序以查找“前五名列表”。。。您真的不希望对一系列列表执行所有这些操作。排序将基于其他列,而不是一系列列表。这仍然是一个问题吗?如果是这样的话,我很重视你的意见,也很乐意为其他解决方案提供建议
df1 = pd.DataFrame({'key': df.columns, 'list':[df[x].tolist() for x in df.columns]})
print (df1)
  key       list
0   a  [1, 2, 3]
1   b  [4, 5, 6]