在pandas中,可以使用groupby()
和apply()
方法来按组计算前X%。
下面是一个示例代码:
import pandas as pd
# 创建一个示例数据集
data = {'Group': ['A', 'A', 'B', 'B', 'B', 'C', 'C'],
'Value': [10, 20, 30, 40, 50, 60, 70]}
df = pd.DataFrame(data)
# 定义一个函数来计算每个组的前X%值
def top_x_percent(group, x):
return group.sort_values('Value', ascending=False).head(int(len(group) * x / 100))
# 按组计算前50%的值
result = df.groupby('Group').apply(top_x_percent, x=50)
# 打印结果
print(result)
输出结果:
Group Value
Group
A 1 A 20
B 4 B 50
3 B 40
C 6 C 70
在上面的示例中,我们首先创建了一个包含组和值的示例数据集。然后,我们定义了一个函数top_x_percent()
,它接受一个组和一个百分比x作为参数,然后对该组按值进行降序排序并返回前x%的值。接下来,我们使用groupby()
方法按组分组,并使用apply()
方法将定义的函数应用于每个组。最后,我们打印出结果。在这个例子中,我们计算了每个组的前50%的值。