python - 如何根据多个值对 pandas 数据框进行排序

标签 python pandas

我有以下 pandas 数据框

 Code     Date         Tank       Hourly_bucket
 0        2018-08-01   1          00:00:01 - 00:30:00
 7        2018-08-02   1          08:00:01 - 08:30:00
 8        2018-08-02   1          09:00:00 - 09:30:00
 1        2018-08-01   1          04:30:01 - 05:00:00
 2        2018-08-01   2          01:00:01 - 01:30:00
 5        2018-08-01   2          10:00:01 - 10:30:00
 6        2018-08-01   2          11:00:01 - 11:30:00

我想按日期、Tank 和 Hourly_bucket 排列数据框以下是我想要的数据框

 Code     Date         Tank       Hourly_bucket
 0        2018-08-01   1          00:00:01 - 00:30:00
 1        2018-08-01   1          04:30:01 - 05:00:00
 2        2018-08-01   2          01:00:01 - 01:30:00
 5        2018-08-01   2          10:00:01 - 10:30:00
 7        2018-08-01   2          11:00:01 - 11:30:00 
 4        2018-08-02   1          00:00:00 - 00:30:00
 8        2018-08-02   1          08:00:01 - 08:30:00

我已经尝试过

df.sort_values(['Tank','Hourly_bucket','Date'], ascending = True)

但是,它没有给我想要的输出。

最佳答案

我认为最好的方法是确保 df.Date 和 df.Hourly_bucket 作为日期时间系列处理。 然后你必须设置inplace = True,否则修改将不会保存。

df.Hourly_bucket = df.Hourly_bucket.str.slice(0, 8)
df.Hourly_bucket = pd.to_datetime(df.Hourly_bucket)
df.Date = pd.to_datetime(df.Date)

df.sort_values(['Date', 'Tank','Hourly_bucket'], ascending =True, inplace=True)

关于python - 如何根据多个值对 pandas 数据框进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52456905/

相关文章:

python - 是否有更快的方法根据条件更新数据框列值?

python - 如何根据Python中的特定名称拆分数据框中的行?

python - Userena - 将 Profile 模型进一步扩展到两个不同的模型

python - 在使用 ffmpeg 处理时流式传输 mkv 文件

python - Python 的 Twisted 中 LoopingCall 和 callInThread 的区别

python - 在 pandas 中传播缺失日期的值

python返回两个字典

python - 为什么我的 'hello world' Python C 模块在除 IDLE 之外的所有情况下都能正常工作?

python - 如何用 Pandas 中的另一个字符串替换部分电子邮件地址?

Python pandas 字符串处理来自 SQL 数据库的分类数据