gpt4 book ai didi

python-3.x - 如何使用 Pandas 按降序和时间按升序对日期进行排序

转载 作者:行者123 更新时间:2023-12-04 18:00:34 25 4
gpt4 key购买 nike

我的 df看起来像这样。这是一个 hourly数据集。

time                    Open
2017-01-03 09:00:00 5.2475
2017-01-03 08:00:00 5.2180
2017-01-03 07:00:00 5.2128
2017-01-02 09:00:00 5.4122
2017-01-02 08:00:00 5.2123
2017-01-02 07:00:00 5.2475
2017-01-01 09:00:00 5.2180
2017-01-01 08:00:00 5.2128
2017-01-01 07:00:00 5.4122

我要 sort hourly仅来自 ascending 的数据命令。

我做了什么?

我做了:
df.sort_values(by='time', ascending=True)

但它 sort time 的全部值但是我只想 sort time部分。

我的新 df应该是这样的:
time                    Open
2017-01-03 07:00:00 5.2475
2017-01-03 08:00:00 5.2180
2017-01-03 09:00:00 5.2128
2017-01-02 07:00:00 5.4122
2017-01-02 08:00:00 5.2123
2017-01-02 09:00:00 5.2475
2017-01-01 07:00:00 5.2180
2017-01-01 08:00:00 5.2128
2017-01-01 09:00:00 5.4122

这里 date保持不变,但 timeascending命令。

最佳答案

如果需要按日期和时间排序,请创建新列以按 DataFrame.assign 排序,然后用 DataFrame.sort_values 按两列排序和升序参数,因为按 dates 排序是下降的,按时间是上升的,最后使用 DataFrame.drop 删除辅助列:

df1 = (df.assign(d=df['time'].dt.date,
t=df['time'].dt.time)
.sort_values(['d','t'], ascending=[False, True])
.drop(['d','t'], axis=1))
print (df1)
time Open
2 2017-01-03 07:00:00 5.2128
1 2017-01-03 08:00:00 5.2180
0 2017-01-03 09:00:00 5.2475
5 2017-01-02 07:00:00 5.2475
4 2017-01-02 08:00:00 5.2123
3 2017-01-02 09:00:00 5.4122
8 2017-01-01 07:00:00 5.4122
7 2017-01-01 08:00:00 5.2128
6 2017-01-01 09:00:00 5.2180

或者如果日期不能更改并且只需要按时间排序,请使用 DataFrame.groupby 使用 lambda 函数 - groupby 未排序,因为 sort=False参数和 group_keys=False是为了避免 MultiIndex :
df1 = (df.groupby(df['time'].dt.date, sort=False, group_keys=False)
.apply(lambda x: x.sort_values('time')))
print (df1)
time Open
2 2017-01-03 07:00:00 5.2128
1 2017-01-03 08:00:00 5.2180
0 2017-01-03 09:00:00 5.2475
5 2017-01-02 07:00:00 5.2475
4 2017-01-02 08:00:00 5.2123
3 2017-01-02 09:00:00 5.4122
8 2017-01-01 07:00:00 5.4122
7 2017-01-01 08:00:00 5.2128
6 2017-01-01 09:00:00 5.2180

关于python-3.x - 如何使用 Pandas 按降序和时间按升序对日期进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57321495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com