pandas中对列进行排序(单列/多列)/(升序/降序)/(多列升序,降序控制)

  • 前言
    我想把数据分析刻进DNA里

如下面的数据,对price,要进行最简单的升序操作:

这个好整:


import pandas as pd

shop = pd.read_csv("data/shop.csv", index_col='id')

shop.sort_values(by='price', inplace=True)

结果:

如果你想整活(被迫)要把数据进行降序排列:

按照降序,传递进ascending,并将其值改为False即可:

import pandas as pd

shop = pd.read_csv("data/shop.csv", index_col='id')

# 默认是升序排序(ascending=True),ascending=Falas:降序排序
# 默认ascending为True
shop.sort_values(by='price', inplace=True, ascending=True)

那么你又想按照priceworthy一起进行排序的话:

你可以先试试:


import pandas as pd

shop = pd.read_csv("data/shop.csv", index_col='id')

shop.sort_values(by='worthy', inplace=True, ascending=False)
shop.sort_values(by='price', inplace=True, ascending=True)

print(shop)

结果:


然后你会发现这样是错的

其实应该是在一行代码中对其进行操作:

# 对两列同时按照升序排列
shop.sort_values(by=['worthy', 'price'], inplace=True, ascending=True)

print(shop)

结果:

注意,然后你又想整活了:

你想把priceworthy一个按照ascending按照True,一个按照False进行排列:

其实像上面的by=['worthy', 'price']一样,传入一个list就行了

直接上代码:

# 如果要使一列ascending为True,一列为False:
shop.sort_values(by=['worthy', 'price'], inplace=True, ascending=[True, False])

结果:

没错,你整活成功了

文件:F:\Project\python\src\WangYiYun\DataAnalysis\17_.py

完整代码笔记:


# @DATE : 2021-1-2
# @TIME : 15:15
# @USER : kirin
# 排序

import pandas as pd

shop = pd.read_csv("data/shop.csv", index_col='id')

# 默认是有小到大排序,ascending=Falas:由大到小排序
# 默认ascending为True
# shop.sort_values(by='worthy', inplace=True, ascending=True)
# shop.sort_values(by='price', inplace=True, ascending=True)

# 上面的这种排序其实是对shop表排了两次序

# 应该在一列代码中对A列和B列进行排序:
# shop.sort_values(by=['worthy', 'price'], inplace=True, ascending=True)

# 如果要使一列ascending为True,一列为False:
shop.sort_values(by=['worthy', 'price'], inplace=True, ascending=[True, False])

print(shop)
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务