我有一个数据表,我想在显示前排序。排序基于聚合。在下面的例子中,我已经计算了一些汽车,我想按每个制造商的汽车总数来订购数据框,按升序排列,例如“奔驰”,然后是“宝马”,然后是“奥迪”。
我想保留所有原始列-聚合仅用于确定排序顺序。
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))
有没有一种更像蟒蛇/熊猫的方法来做到这一点,因为上面的感觉是我为一些应该简单的事情付出了太多的努力。
让我们尝试使用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查询或聚合进行查询??