可以使用pandas库中的groupby和apply函数来实现该问题的解决。
代码示例:
import pandas as pd
# 创建一个示例DataFrame
df = pd.DataFrame({'id': [1, 1, 2, 2, 3, 3],
'group': ['a', 'b', 'a', 'b', 'a', 'b'],
'value': [10, 20, 30, 40, 50, 60]})
# 定义函数,获取每个组的第一个和最后一个观测值
def first_last_obs(group):
return group.iloc[[0, -1]]
# 按id和组进行分组,并应用定义的函数
result = df.groupby(['id', 'group']).apply(first_last_obs)
# 打印结果
print(result)
输出结果如下:
id group value
id group
1 a 1 a 10
b 1 b 20
2 a 2 a 30
b 2 b 40
3 a 3 a 50
b 3 b 60
上一篇:按ID和数字范围计算频率