Python 3.x 将月份格式化为名称时的排序日期时间列

Python 3.x 将月份格式化为名称时的排序日期时间列,python-3.x,pandas,dataframe,python-datetime,Python 3.x,Pandas,Dataframe,Python Datetime,我的数据框中有一列Date-Time,其中日期和时间为字符串 Product Date Time ABC Wed Jan 2 11:14:24 2019 ABC123 Wed Jan 2 11:14:24 2019 ABCXZY Wed Jan 2 11:14:24 2019 BVF123 Mon Jan 14 10:24:20 2019 ABC456 Mon Jan 14 10:24:20 2019 ABC000

我的数据框中有一列
Date-Time
,其中日期和时间为字符串

Product       Date Time
ABC          Wed Jan 2 11:14:24 2019
ABC123       Wed Jan 2 11:14:24 2019
ABCXZY       Wed Jan 2 11:14:24 2019
BVF123       Mon Jan 14 10:24:20 2019
ABC456       Mon Jan 14 10:24:20 2019
ABC000       Mon Feb 4 10:44:08 2019
ABCXYZ       Mon Feb 4 10:44:08 2019
ABC678       Mon Feb 4 10:44:08 2019
ABCQYZ       Wed Feb 20 09:14:40 2019
ABC090       Wed Feb 20 09:14:40 2019  
我已使用以下命令将此列转换为日期时间格式-

df['Date'] = pd.to_datetime(df['Date Time']).dt.strtime('%d-%b-%Y')
现在,我想根据
Date
列对该数据框进行排序,以按日期升序绘制每个日期的数量,但当我使用-

df.sort_values(by='Date', inplace=True, ascending=True)
它只按日期排序,忽略月份名称,即

02-Jan-2019
04-Feb-2019
08-Mar-2019
13-Feb-2019
14-Jan-2019
20-Feb-2019
21-Mar-2019
而不是

02-Jan-2019
14-Jan-2019
04-Feb-2019
13-Feb-2019
20-Feb-2019
08-Mar-2019
21-Mar-2019

如何使用datetime或任何其他模块获得所需的排序?

我们可以执行
argsort

df=df.iloc[pd.to_datetime(df['Date Time'],format='%d-%b-%Y').argsort()]
Out[20]: 
     Date Time
3  14-Jan-2019
0  04-Feb-2019
2  13-Feb-2019
4  20-Feb-2019
1  08-Mar-2019
5  21-Mar-2019
更新

s=df.groupby(['Date Time']).size()
s.index=pd.to_datetime(s.index,format='%d-%b-%Y')
s.sort_index(inplace=True)
s.index=s.index.strftime('%d-%b-%Y')
返回一系列字符串(确切地说是“对象类型”),但不返回一系列日期时间。这就是为什么你的分类是错误的。 下面是执行此操作的代码:

将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
将matplotlib.dates导入为mdates
###数据帧
数据={'Product':['ABC','ABC123','ABCXZY','BVF123','ABC456','ABC000','ABCXYZ','ABC678','ABCQYZ','ABC090'],'Date Time':[Wed Jan 2 11:14:24 2019”,“Wed Jan 2 11:14:24 2019”,“Wed Jan 2 11:14:24 2019”,“Mon Jan 14 10:24:20 2019”,“Mon Jan 14 10:24:20 2019”,“Mon Feb 4 10:44:08 2019”,“Mon Feb 4 10:44:08 2019”,“Wed Feb 20 09:14:40 2019”,“Wed Feb 20 09:14:40 2019”]
df=pd.DataFrame(数据)
###转换为日期时间
df['Date']=pd.to_datetime(df.loc[:,'Date Time'])
###分类
df.sort_值(by='Date',inplace=True)
###密谋
ax=df.groupby('Date').count().Product.plot()
ax.xaxis.set_major_格式化程序(mdates.DateFormatter(“%d-%b-%Y”)#格式化x标签

当我使用
df.groupby(['Date']).count()['Product'].plot()绘制此df时,
X轴没有显示排序的日期顺序…这是否意味着我必须在groupby之后对日期值进行排序?@harry04之后需要进行排序。检查第二行的更新
argsort()
给了我一个`索引器:位置索引超出界限。让我们。当我使用df.groupby(['Date']).count()['Product'].plot()绘制此df时X轴没有显示排序的日期顺序…这是否意味着我必须在groupby之后对日期值进行排序?能否在您的初始帖子中添加“df”数据框的样本?在上面添加了样本数据框!
pd.to_datetime(df['Date Time']).dt.strtime('%d-%b-%Y')