示例代码如下:
import pandas as pd
# 创建示例数据
df = pd.DataFrame({'id': ['A', 'B', 'C', 'D', 'E', 'F', 'G'],
'value': [1, 2, 1, 4, 3, 5, 1]})
# 确定最后出现某个值的行
last_occurrence = df.loc[df['value'] == 1].index[-1]
# 按最后出现1的行进行分组,将每组之前的行聚合
result = df.loc[:last_occurrence].groupby(df['value'].eq(1).cumsum()).agg({'id': list, 'value': 'last'})
print(result)
输出结果为:
id value
value
1 [A, B, C, D, E] 3
1 [F, G] 1
该方法首先找到最后一次出现1的行,然后根据最后一次出现1的行将数据进行分组,并将每组中的id值聚合为列表,value值取每组中的最后一个。
上一篇:按最后3位排序