如何获取DataFrame中匹配Value列最后3个唯一值的最后n行数据
实现代码
完整可运行代码如下:
import pandas as pd # 构造示例DataFrame df = {'Features':['A','A','A','A','C','C','C','C','B','B','B','B'], 'Date':['1/3/2023','1/3/2022','1/3/2022','1/3/2021','1/3/2024','5/8/2020','5/8/2021','5/8/2022','6/1/2020','6/1/2019','5/8/2023','5/8/2023'], 'Value':[2,9,4,7,4,5,7,8,0,3,9,9]} df = pd.DataFrame(df) # 自定义参数:取最后k个唯一值,返回最后n行 k = 3 n = 4 # 步骤1:获取Value列最后k个唯一值 # pandas的unique()方法默认按元素第一次出现的顺序返回唯一值,所以先将Value列逆序再取前k个,就能得到最后出现的k个唯一值 last_k_unique_values = df['Value'][::-1].unique()[:k] # 步骤2:筛选Value匹配目标值的行,取最后n行 res = df[df['Value'].isin(last_k_unique_values)].tail(n) print(res)
运行输出
Features Date Value 8 B 6/1/2020 0 9 B 6/1/2019 3 10 B 5/8/2023 9 11 B 5/8/2023 9
注:你给出的预期输出里索引标注有误,实际运行返回的4行内容与需求完全匹配,仅索引为原始DataFrame的真实索引。
内容的提问来源于stack exchange,提问作者user86907
相关产品推荐
相关产品推荐

