You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在含重复值的Pandas DataFrame中获取指定列前N个值的对应行

解决方案

首先先构造示例中的DataFrame:

import pandas as pd

data = {
    'x': [1,1,1,2,2,3,4],
    'y': ['a','b','c','a','b','a','a'],
    'z': ['x','y','z','x','x','y','z']
}
df = pd.DataFrame(data)

1. 获取x列前2个唯一值对应的所有行

这里的"前2个值"指x列原始顺序中的前2个唯一值(即1和2),实现代码如下:

# 提取x列前2个唯一值
top_x_values = df['x'].unique()[:2]
# 筛选对应行
result_x = df[df['x'].isin(top_x_values)]
print(result_x)

输出结果:

x  y  z
0  1  a  x
1  1  b  y
2  1  c  z
3  2  a  x
4  2  b  x

2. 获取y列前2个唯一值对应的所有行

同理,y列原始顺序的前2个唯一值是'a'和'b',实现代码如下:

# 提取y列前2个唯一值
top_y_values = df['y'].unique()[:2]
# 筛选对应行
result_y = df[df['y'].isin(top_y_values)]
print(result_y)

输出结果:

x  y  z
0  1  a  x
1  1  b  y
3  2  a  x
4  2  b  x
5  3  a  y
6  4  a  z

补充说明

如果需要按值的出现频率取前2个(而非原始顺序的唯一值),可以用value_counts实现:

# 按频率取y列前2个值
top_y_freq = df['y'].value_counts().index[:2]
result_y_freq = df[df['y'].isin(top_y_freq)]

从你的预期结果来看,原始顺序的唯一值筛选更符合需求。

内容的提问来源于stack exchange,提问作者Taylor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 20:45:59