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