Pandas DataFrame 删除 groupby 中的行

pandas

1个回答

写回答

tao20011221

2025-07-09 11:15

+ 关注

Pandas
Pandas

使用 Pandas DataFrame 删除 groupby 中的行

在数据分析和处理中,经常需要对数据进行分组并进行聚合操作。而在某些情况下,我们可能需要根据一些条件来删除 groupby 中的特定行。Pandas 是一个强大的数据处理工具,它提供了丰富的函数和方法来满足我们的需求。

在本文中,我们将探讨如何使用 Pandas 删除 groupby 中的行,并通过一个案例代码来说明。

案例背景与数据集

假设我们有一份销售数据集,包含了销售人员的姓名、销售额和销售日期。我们想要按照销售人员对数据进行分组,并删除销售额低于平均值的行。

首先,让我们导入 Pandas 并创建一个示例数据集:

Python

import Pandas as pd

# 创建示例数据集

data = {

'销售人员': ['张三', '李四', '王五', '张三', '李四', '王五'],

'销售额': [100, 200, 150, 120, 180, 160],

'销售日期': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-03', '2021-01-03']

}

df = pd.DataFrame(data)

数据集的结构如下:

销售人员 销售额 销售日期

0 张三 100 2021-01-01

1 李四 200 2021-01-01

2 王五 150 2021-01-02

3 张三 120 2021-01-02

4 李四 180 2021-01-03

5 王五 160 2021-01-03

根据条件删除 groupby 中的行

现在,我们将按照销售人员对数据进行分组,并计算每个销售人员的平均销售额:

Python

# 按照销售人员分组并计算平均销售额

grouped = df.groupby('销售人员')['销售额'].mean()

计算结果如下:

销售人员

张三 110.0

李四 190.0

王五 155.0

Name: 销售额, dtype: float64

接下来,我们可以使用条件过滤来删除销售额低于平均值的行:

Python

# 使用条件过滤删除低于平均销售额的行

df_filtered = df[~df.apply(lambda x: x['销售额'] < grouped[x['销售人员']], axis=1)]</p>

最后,让我们看看删除后的数据集:

销售人员 销售额 销售日期

1 李四 200 2021-01-01

4 李四 180 2021-01-03

5 王五 160 2021-01-03

可以看到,原数据集中销售额低于平均值的行已经被成功删除。

通过本文的案例代码,我们学习了如何使用 Pandas DataFrame 删除 groupby 中的行。首先,我们按照指定列对数据进行分组,并计算每个组的统计量。然后,我们使用条件过滤来删除特定行。这种方法可以帮助我们更好地处理和分析数据,从而得出更准确的。

希望本文对大家在数据处理和分析中有所帮助!

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号