繁体   English   中英

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

[英]Pandas: How to sort dataframe rows by date of one column

所以我有两个不同的数据框架,我连接了两个。 所有列都相同; 但是,日期列具有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:我已经尝试了其他帖子中的选项,但它不起作用

试着详细说明可以做什么:初始化/合并数据帧并将列转换为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

按日期排序

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

尝试将“日期”列更改为pandas 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

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')

输出:

date    people
04/12/61    1

05/05/61    1

07/21/61    1

08/06/61    2

不知道你想要什么得到,但如果你只是想谁属于一个 约会,只是简单地使用groupby

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

或者不同的组合

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

然后你可以根据需要对其进行排序。 也许这将是你想要的按日期排序Pandas Dataframe

为什么不简单?

dataset[SortBy["date"]]

你可以提供你尝试过的东西或你的结构如何?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM