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

Python 熊猫:如何按一列的日期对数据框行进行排序,python,pandas,Python,Pandas,所以我有两个不同的数据帧,我把它们连接起来。所有列都相同;但是,“日期”列有各种不同的日期,格式为M/D/YR 数据帧日期在序列的后面会被洗牌 是否有一种方法可以保存整个数据帧本身,并根据日期列中的日期对行进行排序。我还想保留日期的格式 所以基本上 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

所以我有两个不同的数据帧,我把它们连接起来。所有列都相同;但是,“日期”列有各种不同的日期,格式为M/D/YR

数据帧日期在序列的后面会被洗牌

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

所以基本上

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:我在另一篇文章中尝试了这些选项,但都不起作用

为什么不简单呢

dataset[SortBy["date"]]
您能否提供您尝试过的内容或您的结构如何

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

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

不确定你到底想得到什么,但如果你只想得到属于某个日期的人,只需使用
groupby

df = df.groupby('date').sum()
还是不同的团员

df = df.groupby('date').agg(lambda col: col.tolist()).reset_index()
然后你可以根据需要对它进行排序。也许这就是你要找的
试图详细说明可以做什么: 初始化/合并dataframe并将列转换为datetime类型

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
    date    people
2   2015-06-05  0
0   2015-06-08  1
1   2018-07-10  2
    date    people
2   06/05/2015  0
0   06/08/2015  1
1   07/10/2018  2
date       people

1961-04-12  1

1961-05-05  1

1961-07-21  1

1961-08-06  2
date    people
04/12/61    1

05/05/61    1

07/21/61    1

08/06/61    2
按日期排序

df=df.sort_values('date')
print(df)
输出:

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

1961-04-12  1

1961-05-05  1

1961-07-21  1

1961-08-06  2
date    people
04/12/61    1

05/05/61    1

07/21/61    1

08/06/61    2
再次维护格式:

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

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

1961-04-12  1

1961-05-05  1

1961-07-21  1

1961-08-06  2
date    people
04/12/61    1

05/05/61    1

07/21/61    1

08/06/61    2

尝试将“日期”列更改为Datetime,然后进行排序

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
0   2015-06-08  1
1   2018-07-10  2
2   2015-06-05  0
    date    people
2   2015-06-05  0
0   2015-06-08  1
1   2018-07-10  2
    date    people
2   06/05/2015  0
0   06/08/2015  1
1   07/10/2018  2
date       people

1961-04-12  1

1961-05-05  1

1961-07-21  1

1961-08-06  2
date    people
04/12/61    1

05/05/61    1

07/21/61    1

08/06/61    2
要返回初始格式,请执行以下操作:

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

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

1961-04-12  1

1961-05-05  1

1961-07-21  1

1961-08-06  2
date    people
04/12/61    1

05/05/61    1

07/21/61    1

08/06/61    2

什么是
排序
?它的定义是什么?和
反向
?为什么这个答案有3张投票?因为最后会在日期上加上一些领先的“0”,你可以改为创建一个
dummy\u date
列,它是
datetime
,按此排序,然后删除它,使
date
真正保持不变。但基本思想是一样的:谢谢。我又添加了一行代码以获得初始格式,并打印了输出