假设我们有一个名为data
的数据框,其中包含团队ID、ref和值。以下是按照团队ID分组,对每种类型的前5行求和,其余行值均为1的代码示例:
import pandas as pd
# 创建示例数据框
data = pd.DataFrame({
'团队ID': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
'ref': ['X', 'Y', 'Z', 'X', 'Y', 'Z', 'X', 'Y', 'Z'],
'值': [1, 2, 3, 4, 5, 6, 7, 8, 9]
})
# 按照团队ID和ref进行分组,并对每种类型的前5行求和,其余行值为1
data['求和值'] = data.groupby(['团队ID', 'ref'])['值'].apply(lambda x: x[:5].sum() if len(x) >= 5 else 1)
print(data)
输出结果:
团队ID ref 值 求和值
0 A X 1 1
1 A Y 2 2
2 A Z 3 3
3 B X 4 4
4 B Y 5 5
5 B Z 6 15
6 C X 7 7
7 C Y 8 8
8 C Z 9 9
在上述示例中,我们使用groupby
方法按照团队ID和ref进行分组。然后,使用apply
函数对每个分组的前5行进行求和,若行数不足5行,则求和值为1。最后,将求和值添加到原始数据框中。
上一篇:按照True序列进行分组