如何在pandas dataframe中取前N行及与第N行price列值相等的所有行?
解决方案
你可以先按price列降序排序后,提取第N行的price值作为阈值,再筛选所有price大于等于该阈值的行即可,具体实现如下:
完整实现代码
import pandas as pd # 构造示例数据 data = {'id': ['A', 'B', 'C', 'D'], 'price': [30, 35, 30, 15]} car_dataframe = pd.DataFrame(data) N = 2 # 第一步:按price列降序排序 sorted_df = car_dataframe.sort_values(by=['price'], ascending=False) # 第二步:取第N行的price作为阈值(pandas索引从0开始,所以取iloc[N-1]) price_threshold = sorted_df['price'].iloc[N-1] # 第三步:筛选所有price大于等于阈值的行 result = sorted_df[sorted_df['price'] >= price_threshold] print(result)
运行输出结果
id price 1 B 35 0 A 30 2 C 30
实现逻辑说明
- 先排序保证所有行按照price从高到低排列,不会出现高值数据漏选的情况
- 以第N行的price为阈值筛选,自动包含了所有和第N行price相等的记录,避免直接切片截断同值数据的问题
- 不需要修改原数据框,兼容性更强
内容的提问来源于stack exchange,提问作者jimmy
相关产品推荐
相关产品推荐

