Python 如何在保持某些coulmn项不变的情况下,基于其他列在数据帧中排列列

Python 如何在保持某些coulmn项不变的情况下,基于其他列在数据帧中排列列,python,pandas,Python,Pandas,我已经被困在这个问题上好几天了,如果有任何帮助,我将不胜感激 data = {"Fruit": ['Apples', 'Apples', 'Apples', 'Apples', 'Bananas', 'Bananas', 'Bananas', 'Bananas'], "Prices": [4.2, 3.5, 4.1, 3.8, 1.2, 1.2, 1.5, 5.1], "Market PLace&qu

我已经被困在这个问题上好几天了,如果有任何帮助,我将不胜感激

data = {"Fruit": ['Apples', 'Apples', 'Apples', 'Apples', 'Bananas', 'Bananas', 'Bananas', 'Bananas'],
           "Prices": [4.2, 3.5, 4.1, 3.8, 1.2, 1.2, 1.5, 5.1],
            "Market PLace": ['Main Market', 'Apple bee', 'Jamal apples', 'Bazzar mall', 'Banana Peel', 'Daimond Fruits', 'Main Market', 'Apple bee']
           }
输出应如下所示:

data = {"Fruit": ['Apples', 'Apples', 'Bananas', 'Bananas'],
           "Prices": [4.2, 4.1, 5.1, 1.5],
            "Market PLace": ['Main Market', 'Jamal apples', 'Apple bee', 'Main Market']
           }
水果的位置没有变化(即同一类别中最贵的水果排在第一位,然后是另一个类别),但每两种水果的价格是按降序排列的

我尝试过使用data.sort_值(['Fruit','Prices']),但这不会按降序排列数据框(最昂贵的两种水果价格)

通过将水果分成两个数据帧(苹果和香蕉),然后使用升序=False按降序排列,这样做会更容易;使用.head(2)获得前2个水果。但我不知道该怎么办,更重要的是,水果清单非常大

我正在写熊猫和蟒蛇3 提前谢谢你

这可能会有所帮助

您需要将
sort_value
函数与groupby()结合使用;
head
功能为您提供最昂贵的两种水果

labels = (
    df.sort_values(["Fruit", "Prices"], ascending=[True, False])
    .groupby("Fruit")
    .Prices.head(2)
    .index
)

df.loc[labels]


   Fruit    Prices  Market PLace
0   Apples  4.2 Main Market
2   Apples  4.1 Jamal apples
7   Bananas 5.1 Apple bee
6   Bananas 1.5 Main Market

如果您共享完整的数据帧代码,这将对其他人有所帮助。你分享的是一本字典。哇!谢谢。它起作用了,而且是直观的。