Python 3.x 如何对数据帧进行排序?

Python 3.x 如何对数据帧进行排序?,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,请告诉我如何对这个数据框进行排序,以便每年的数据都按降序排序。我试着使用.sort_values()我在下面得到了这个数据帧,这不是我想要的 一个简单的数据帧,可用于表示图片中给定的数据帧 myDic = {'Custmers':['A1','A1','A1','B4','A7','B4'],'Month':['May','June','June','June','July','August'],'Type':['Bag','Bag','Food','Drink', 'Cow','Cup'],

请告诉我如何对这个数据框进行排序,以便每年的数据都按降序排序。我试着使用.sort_values()我在下面得到了这个数据帧,这不是我想要的

一个简单的数据帧,可用于表示图片中给定的数据帧

myDic = {'Custmers':['A1','A1','A1','B4','A7','B4'],'Month':['May','June','June','June','July','August'],'Type':['Bag','Bag','Food','Drink', 'Cow','Cup'],'Year':[2004,2004,2005,2004, 2005, 2004]}

df = pd.DataFrame(myDic)
df.groupby(['Year','Month']).count()

如何对给定的数据帧进行排序,使2004年6月的行在8月之前出现?

添加一个新列的最简单方法,该列获取每个月的数字形式并按其排序。如果不希望在结果中显示,则可以在排序后删除:

from time import strptime
df['Month_Num'] = [strptime(month,'%B').tm_mon for month in df.index.get_level_values('Month')]
df.sort_values(by = ['Year','Month_Num']).drop('Month_Num', axis =1)
p.S.在相同的df变量中使用了您的df.groupby结果。结果如下:

                   Custmers  Type
Year    Month       
2004    May                1    1
        June               2    2
        August             1    1
2005    June               1    1
        July               1    1

如果要对任何轴进行降序排序,只需将一个布尔值列表传递给
sort_values()
函数作为
升序=[False,True]

添加一个新列的最简单方法,该列获取每个月的数字形式并按其排序。如果不希望在结果中显示,则可以在排序后删除:

from time import strptime
df['Month_Num'] = [strptime(month,'%B').tm_mon for month in df.index.get_level_values('Month')]
df.sort_values(by = ['Year','Month_Num']).drop('Month_Num', axis =1)
p.S.在相同的df变量中使用了您的df.groupby结果。结果如下:

                   Custmers  Type
Year    Month       
2004    May                1    1
        June               2    2
        August             1    1
2005    June               1    1
        July               1    1

如果您想要对任何轴进行降序排序,只需将一系列布尔值传递给
sort_values()
函数,作为
升序=[False,True]

这行代码似乎对我很有帮助

merged_df.groupby(['Year','Month_Name']).count().sort_values(['Year','Customer'], ascending = [True, False])

这行代码似乎对我起了作用

merged_df.groupby(['Year','Month_Name']).count().sort_values(['Year','Customer'], ascending = [True, False])

请以文本形式提供最少的可复制数据。这将使人们更容易帮助你。这是否回答了你的问题?Hy Hamza,我添加了一个示例数据框来表示我希望实现的目标。请以文本形式提供最少的可复制数据。这将使人们更容易帮助你。这是否回答了你的问题?Hy Hamza,我添加了一个示例数据帧来表示我希望实现的目标。