当前位置: 首页 > 知识库问答 >
问题:

根据聚合数据的结果对数据帧进行排序(即,根据较短列表的index())

闽哲
2023-03-14

我有一个数据表,我想在显示前排序。排序基于聚合。在下面的例子中,我已经计算了一些汽车,我想按每个制造商的汽车总数来订购数据框,按升序排列,例如“奔驰”,然后是“宝马”,然后是“奥迪”。

我想保留所有原始列-聚合仅用于确定排序顺序。

import pandas as pd

df = pd.DataFrame({
    "manufacturer": ["bmw", "bmw", "bmw", "audi", "audi", "audi", "audi", "mercedes", "mercedes"],
    "color": ["red", "blue", "silver", "red", "blue", "black", "blue", "green", "white"],
    "count": [5, 4, 7, 1, 1, 9, 7, 5, 3],
    "misc": ["a", "bc", "def", "gh", "ijk", "l", "mnop", "qrst", "uvwxyz"],
})

# order manufacturers by increasing total car counts
order = list(df.groupby("manufacturer").agg({"count": sum}).sort_values(by="count", ascending=True).index)

# apply ordering to original dataframe based on manufacturer's position in 'order' list
df.sort_values(by="manufacturer", key=lambda x: x.apply(order.index))

有没有一种更像蟒蛇/熊猫的方法来做到这一点,因为上面的感觉是我为一些应该简单的事情付出了太多的努力。

共有1个答案

尉迟宣
2023-03-14

让我们尝试使用argsort

out = df.iloc[df.groupby("manufacturer")['count'].transform('sum').argsort()]
Out[207]: 
  manufacturer   color  count    misc
7     mercedes   green      5    qrst
8     mercedes   white      3  uvwxyz
0          bmw     red      5       a
1          bmw    blue      4      bc
2          bmw  silver      7     def
3         audi     red      1      gh
4         audi    blue      1     ijk
5         audi   black      9       l
6         audi    blue      7    mnop
 类似资料:
  • 我有一个像这样的数据框- 我有一个这样的列表- 现在,我想根据列名列表对数据框进行排序 因此,新的数据框将有列名称-

  • 目前,我有一个名为的,看起来像这样,其中几何体表示一个点(纬度、经度)。 给定另一个点(lat,long),我想找到从这个数据框到那个特定点的最近点。我用距离函数计算了最近的点 现在我有一个系列,看起来像这样 我怎样才能得到一个Geodataframe的副本,它按相同的顺序排序,如下所示?谢谢

  • 问题内容: 我想对以下数据框进行排序: 我想对它进行排序,以便根据列表对LSE列进行重新排序: 当然,其他列也需要相应地重新排序。有没有办法在熊猫里做到这一点? 问题答案: pandas0.15版中对s的改进支持使您可以轻松做到这一点: 如果这只是临时排序,则可能不希望将LSE列保留为a ,但是如果您希望这种排序能够在不同的上下文中使用几次,则是一个很好的解决方案。 在更高版本的,中,已被替换为,

  • 我有一个,有200多列。问题在于订单生成时 我需要对这些列进行如下排序: 我有办法在Python中做到这一点吗?

  • 编辑:对于同样的问题,我尝试编写一个比较器。但它不起作用

  • 我有学生(弦)和老师(弦列表)。我想根据讲师人数按降序提取记录。讲师如下示例:[a、b、c]-3、[e、f]-2、[g、h、i、j]-4。 我要按4,3,2的顺序。 这取决于现场讲师阵列的大小。如何使用mongoTemplate或自定义mongodb查询或聚合进行查询??