使用 Pandas 进行 DataFrame 重塑:从长格式到宽格式(格式.重塑.Pandas.DataFrame...)

wufei123 发布于 2025-09-11 阅读(1)

使用 pandas 进行 dataframe 重塑:从长格式到宽格式

本文将介绍如何使用 Pandas 库将 DataFrame 从长格式重塑为宽格式。通过 pivot 和 stack 方法的组合,可以灵活地转换数据结构,使得数据更易于分析和可视化。本文提供详细的代码示例和解释,帮助读者掌握 DataFrame 重塑的技巧。

在数据分析中,经常需要对 DataFrame 的结构进行调整,以便更好地适应分析需求。其中,将长格式的数据转换为宽格式是一种常见的操作。Pandas 提供了多种方法来实现这一目标,本文将重点介绍如何使用 pivot 和 stack 方法来实现 DataFrame 的重塑。

使用 pivot 和 stack 重塑 DataFrame

假设我们有以下 DataFrame:

import pandas as pd

data = {'Date': [1, 1, 1],
        'Item': [1, 2, 3],
        'A': ['a1', 'a2', 'a3'],
        'B': ['b1', 'b2', 'b3']}
df = pd.DataFrame(data)

print(df)

输出:

   Date  Item   A   B
0     1     1  a1  b1
1     1     2  a2  b2
2     1     3  a3  b3

我们的目标是将其转换为以下格式:

   Date Letter Item 1 Item 2 Item 3
0     1      A     a1     a2     a3
1     1      B     b1     b2     b3

我们可以使用 pivot 方法将 'Item' 列转换为列名,'Date' 列作为索引,然后使用 stack 方法将列堆叠起来,最后使用 reset_index 方法重置索引。

PIA PIA

全面的AI聚合平台,一站式访问所有顶级AI模型

PIA226 查看详情 PIA
out = (df.pivot(columns='Item', index='Date').stack(0)
       .add_prefix('Item ').reset_index(names=['Date', 'Letter']))

print(out)

输出:

   Date Letter Item 1 Item 2 Item 3
0     1      A     a1     a2     a3
1     1      B     b1     b2     b3

代码解释:

  1. df.pivot(columns='Item', index='Date'): pivot 函数以 'Item' 列的值作为新的列,'Date' 列作为索引。原始 DataFrame 中的 'A' 和 'B' 列的值将根据 'Item' 列的值进行填充。
  2. .stack(0): stack 函数将列索引堆叠到行索引,参数 0 表示堆叠第一层列索引(在本例中是 'A' 和 'B')。
  3. .add_prefix('Item '): 为列名添加 "Item " 前缀,使列名更清晰。
  4. .reset_index(names=['Date', 'Letter']): reset_index 函数将索引重置为默认的整数索引,并将原来的索引 'Date' 和堆叠后的 'A' 和 'B' 列命名为 'Date' 和 'Letter'。

注意事项:

  • pivot 函数要求索引和列的组合必须是唯一的。如果存在重复的组合,则会引发错误。
  • stack 函数会将列索引堆叠到行索引,可以指定堆叠的层级。
  • reset_index 函数可以将索引重置为默认的整数索引,并可以指定新的列名。

总结:

通过 pivot 和 stack 方法的组合,可以灵活地将 DataFrame 从长格式重塑为宽格式。这种方法适用于需要将某些列的值转换为列名,并将其他列的值根据这些列名进行填充的场景。掌握这种技巧可以帮助你更好地处理和分析数据。

以上就是使用 Pandas 进行 DataFrame 重塑:从长格式到宽格式的详细内容,更多请关注知识资源分享宝库其它相关文章!

相关标签: pandas date 数据结构 堆 数据分析

标签:  重塑 格式 Pandas 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。