因此,我有两个不同的数据帧,并且两个都连接在一起。所有列都相同;但是,日期列具有 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:我已经尝试了另一篇文章中的选项,但是它不起作用
答案 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]