小能豆

在 Pandas 数据框中透视表

py

我有一个要求,我想尝试计算值并将它们放入数据透视表中。

这是我的数据框,

  Cola        Colb          
 Apple    Rippened 
Orange    Rippened
 Apple  UnRippened
 Mango  UnRippened

我希望输出是这样的,

        Rippened  UnRippened
Apple          1           1
Mango          0           1
Orange         1           0

请分享您的想法。


阅读 46

收藏
2024-11-17

共1个答案

小能豆

您可以使用 Pandas 的 pivot_tablegroupby 方法来实现这个需求。以下是两种实现方法:


方法 1:使用 pivot_table

pivot_table 是一种强大的工具,用于创建数据透视表并进行聚合操作。

import pandas as pd

# 创建 DataFrame
data = {'Cola': ['Apple', 'Orange', 'Apple', 'Mango'],
        'Colb': ['Rippened', 'Rippened', 'UnRippened', 'UnRippened']}
df = pd.DataFrame(data)

# 创建数据透视表
pivot = df.pivot_table(index='Cola', columns='Colb', aggfunc='size', fill_value=0)

# 重命名列名(可选)
pivot.columns.name = None

print(pivot)

输出:

        Rippened  UnRippened
Apple          1           1
Mango          0           1
Orange         1           0
  • 关键参数解释
  • index='Cola':指定行索引。
  • columns='Colb':指定列标签。
  • aggfunc='size':计数每个组合的出现次数。
  • fill_value=0:填充缺失值为 0。

方法 2:使用 groupbyunstack

如果不使用 pivot_table,可以通过 groupbyunstack 来实现类似效果。

# 使用 groupby 和 unstack
result = df.groupby(['Cola', 'Colb']).size().unstack(fill_value=0)

# 重命名列名(可选)
result.columns.name = None

print(result)

输出:

        Rippened  UnRippened
Apple          1           1
Mango          0           1
Orange         1           0

方法选择

  • 如果你需要灵活的透视表功能,使用 pivot_table 更方便。
  • 如果你只需要简单的分组计数,groupbyunstack 方法更直观。

这两种方法都能轻松满足你的需求!

2024-11-17