使用Pandas重塑DataFrame:将多列数据聚合为列表并进行透视

admin 百科 12

使用Pandas重塑DataFrame:将多列数据聚合为列表并进行透视-第1张图片-佛山资讯网

本文详细介绍了如何使用Pandas高效地将DataFrame中的多列数据聚合为列表,并进一步通过透视操作将其重塑为更宽的格式。通过结合`assign`、`apply`和`pivot`等函数,我们能够避免繁琐的循环,以声明式和高性能的方式实现复杂的数据转换,从而满足特定的数据分析和合并需求。

在数据处理和分析中,我们经常需要对DataFrame的结构进行调整,以适应不同的分析模型或与其他数据集进行合并。一种常见的场景是将多个相关的数值列聚合到一个列表中,然后将DataFrame从“长”格式重塑为“宽”格式,使得原有的某个分类列成为新的列标题,聚合后的列表作为这些新列的值。

问题描述与目标

假设我们有一个Pandas DataFrame,其中包含ID、名称、多个数值列(如value1、value2、value3)以及一个类型列Type。我们的目标是将value1到value3这几列的数据,针对每个name和Type组合,聚合成一个列表,并将name列的值作为新的列标题,Type列作为行索引或第一列。

原始数据示例:

   id name  value1  value2  value3 Type
0   1  AAA     1.0     1.5     1.8  NEW
1   2  BBB     2.0     2.3     2.5  NEW
2   3  CCC     3.0     3.6     3.7  NEW

登录后复制

期望输出格式:

  Type              AAA              BBB              CCC
0  NEW  [1.0, 1.5, 1.8]  [2.0, 2.3, 2.5]  [3.0, 3.6, 3.7]

登录后复制

核心思路

实现这一转换主要分为两个核心步骤:

  1. 聚合特定列为列表: 将DataFrame中一系列相邻的数值列在行级别上合并成一个Python列表。
  2. 数据透视重塑: 利用Pandas的透视功能,将聚合后的列表作为值,以Type作为索引,name作为新的列名,从而完成DataFrame的重塑。

这种方法避免了显式的Python循环,充分利用了Pandas的向量化操作,从而提供了更高的效率和更简洁的代码。

实现步骤与代码

我们将通过链式操作来完成整个转换过程。

1. 聚合多列为列表

首先,我们需要选择value1到value3这些列,并将它们在每一行上聚合成一个列表。我们可以使用df.loc进行列选择,然后结合apply(list, axis=1)在行方向上应用list函数。最后,使用assign方法将这个新生成的列表列添加到DataFrame中。

标签: python app 聚合函数

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~