例如,我有两张桌子

包含字段A、B的表A(按A计数排序): A、B

Column A Column B
foo1 a
foo2 b
foo3 a
foo4 d
foo5 c
foo6 a

表B(按B计数排序):

Column B
a
b
c
d
e

我想要一个这样的桌子(每个B都能拿到最受欢迎的两个A):

Column A Column B
foo1 a
foo3 a
foo2 b
foo4 d
foo5 c

我试着做聚合和分组,但我不知道如何创建它.

推荐答案

IIUC使用ORDERED Categorical,然后按此列排序,并按GroupBy.head获得Top2值:

df['Column B'] = pd.Categorical(df['Column B'], 
                                ordered=True, 
                                categories=df['Column B'].unique())

如果需要订购,请从另外DataFrame个使用categories=df2['Column B']:

df['Column B'] = pd.Categorical(df['Column B'], 
                                ordered=True, 
                                categories=df2['Column B'])

df = df.sort_values('Column B').groupby('Column B').head(2)
print (df)
  Column A Column B
0     foo1        a
2     foo3        a
1     foo2        b
3     foo4        d
4     foo5        c

Python-3.x相关问答推荐

小部件padx和包方法ipadx有什么不同?

Pyvis和Networkx:如何根据源或目标使 node colored颜色 不同

被多个\n拆分并保留

为什么我的Selenium脚本在密码元素上失败?

在Python代码中包含NAN值时,以两个矩阵计算RMSE

没有这样的命令';角色';-可靠分子

无法导入名称';核心';来自部分初始化的模块';tensorflow_datasets';(很可能是由于循环导入)

Heroku 中的未知错误代码缺少一个或多个参数

将自定义函数应用于 pandas 数据框的每一列

如何使用 Selenium Python 连续单击一个按钮直到另一个元素出现?

如何将 OLS 趋势线添加到使用 updatemenus 显示数据子集的 plotly 散点图图形对象?

如何转置和 Pandas DataFrame 并命名新列?

Snakemake 'run' 指令不产生错误信息

合并问卷中多列中的稀疏问题 - Pandas

将字典列表展平为数据框列

类型提示和链式赋值以及多重赋值

日志(log)模块不适用于 Python3

Selenium (Python) - 使用 Chrome 网络驱动程序等待下载过程完成

如何找出从哪个模块导入名称?

无 Python 错误/错误?