Pandas 是一个强大的 Python 数据分析库,提供了大量的数据结构和数据分析工具。groupby
方法是 Pandas 中用于按一个或多个列对数据进行分组的常用方法。通过分组,可以对每个组应用聚合函数(如 sum、mean 等),也可以进行条件筛选。
假设我们有一个 DataFrame df
,包含以下列:A
, B
, C
, D
。我们想按列 A
和 B
进行分组,并删除满足以下条件的行:组内 C
的平均值大于 10,且 D
的最大值小于 5。
import pandas as pd
# 创建示例 DataFrame
data = {
'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': [1, 2, 3, 4, 5, 6, 7, 8],
'D': [10, 20, 30, 40, 50, 60, 70, 80]
}
df = pd.DataFrame(data)
# 按列 A 和 B 分组,并计算每组的 C 的平均值和 D 的最大值
grouped = df.groupby(['A', 'B']).agg({'C': 'mean', 'D': 'max'})
# 筛选满足条件的组
to_drop = grouped[(grouped['C'] > 10) & (grouped['D'] < 50)].index
# 删除满足条件的行
df = df[~df.set_index(['A', 'B']).index.isin(to_drop)]
print(df)
A
, B
, C
, D
的 DataFrame。groupby
方法按列 A
和 B
进行分组,并计算每组的 C
的平均值和 D
的最大值。C
的平均值大于 10 且 D
的最大值小于 50,筛选出需要删除的组。isin
方法和布尔索引,删除满足条件的行。通过上述步骤,你可以按多列分组并根据多个条件删除行。希望这个示例对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云