熊猫:如何按一列的日期对数据框行进行排序

时间:2018-07-10 18:01:59

标签: python pandas

因此,我有两个不同的数据帧,并且两个都连接在一起。所有列都相同;但是,日期列具有 M / D / YR 格式的各种不同日期。

enter image description here 数据帧日期在序列的后面会被拖曳

有没有一种方法可以保留整个数据框本身,并根据日期列中的日期对 进行排序。我还想保留日期的格式。

所以基本上

date        people
6/8/2015    1
7/10/2018   2
6/5/2015    0

被转换为:

date          people
6/5/2015      0
6/8/2015      1
7/10/2018     2

谢谢!

PS:我已经尝试了另一篇文章中的选项,但是它不起作用

4 个答案:

答案 0 :(得分:3)

尝试详细说明可以做什么:  初始化/合并数据框并将列转换为日期时间类型

df= pd.DataFrame({'people':[1,2,0],'date': ['6/8/2015','7/10/2018','6/5/2015',]})
df.date=pd.to_datetime(df.date,format="%m/%d/%Y")
print(df)

输出:

   date      people
0   2015-06-08  1
1   2018-07-10  2
2   2015-06-05  0

根据日期排序

df=df.sort_values('date')
print(df)

输出:

    date    people
2   2015-06-05  0
0   2015-06-08  1
1   2018-07-10  2

再次维护格式:

df['date']=df['date'].dt.strftime('%m/%d/%Y')
print(df)

输出:

    date    people
2   06/05/2015  0
0   06/08/2015  1
1   07/10/2018  2

答案 1 :(得分:0)

尝试将“日期”列更改为熊猫日期时间,然后进行排序

<xsl:value-of select="concat(substring-before(text(),'.'),'.', substring(substring-after(text(),'.'),1,2))" />

输出:

import pandas as pd
df= pd.DataFrame({'people':[1,1,1,2],'date': 
['4/12/1961','5/5/1961','7/21/1961','8/6/1961']})
df['date'] =pd.to_datetime(df.date)
df.sort_values(by='date')

要恢复初始格式:

date       people

1961-04-12  1

1961-05-05  1

1961-07-21  1

1961-08-06  2

输出:

df['date']=df['date'].dt.strftime('%m/%d/%y')

答案 2 :(得分:-1)

不确定要获得什么,但是如果您只想让属于一个日期,则只需使用groupby

df = df.groupby('date').sum()

或其他分组依据

df = df.groupby('date').agg(lambda col: col.tolist()).reset_index()

然后,您可以根据需要对其进行排序。也许这就是您要寻找的 Sort Pandas Dataframe by Date

答案 3 :(得分:-2)

为什么不简单?

dataset[SortBy["date"]]

您能否提供您尝试过的内容或结构如何?

如果您需要按相反的顺序排序,请执行以下操作:

dataset[SortBy["date"]][Reverse]