例如,我有两张表
表 A 包含字段 A、B(按 A 计数排序): A、B
表 B(按 B 数量排序):
我想要一个像这样的表格(为每个 B 获取前 2 个最受欢迎的 A):
我尝试进行聚合和分组,但我不知道如何创建它。
最佳答案
IIUC 使用订购 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 - Pandas 窗口聚合两个排序表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74654693/