以下是一个示例代码,按照一个列的最大值进行分组并过滤,并根据另一个列的条件选择前N个值:
import pandas as pd
# 创建示例数据
data = {'Group': ['A', 'A', 'B', 'B', 'C', 'C'],
'Value': [10, 20, 30, 40, 50, 60],
'Condition': [1, 2, 3, 4, 5, 6]}
df = pd.DataFrame(data)
# 按照Group列的最大值进行分组
grouped = df.groupby('Group')
# 过滤条件:选择Value列的最大值大于30的组
filtered = grouped.filter(lambda x: x['Value'].max() > 30)
# 根据Condition列的条件选择前N个值(这里选择前2个)
result = filtered.groupby('Group').apply(lambda x: x.nlargest(2, 'Condition'))
print(result)
运行上述代码,输出结果如下:
Group Value Condition
Group
A 1 A 20 2
B 3 B 40 4
C 5 C 60 6
该示例代码首先创建了一个包含Group、Value和Condition列的DataFrame。然后,使用groupby函数按照Group列的值进行分组。接下来,使用filter函数根据Value列的最大值大于30的条件对分组进行过滤。最后,使用apply函数根据Condition列的条件选择每个组的前两个值。