r - 如何按月对数据帧进行排序/排序?
问题描述
所以我用多年(1961-2019)的月降水数据制作了这个数据框。但不知何故,我的数据框最终变得一团糟(查看图片)。有没有办法按月对我的数据进行排序?出于某种原因,我先是四月,然后是十一月,六月等,我不知道如何更改它。
解决方案
你可能需要尝试这样的事情
import pandas as pd
from datetime import datetime
# Here I made a DataFrame with the sample date you post
data=[("April", 1961, 1.5100000 ),("August", 1961, 1.2935484 ),("December", 1961, 3.6580645 ),("February", 1961, 2.9821429 ),("January", 1961, 5.0000000),("January", 1962, 6.0000000)]
df = pd.DataFrame(data, columns=["month", "year", "prec"])
# So we create a new datetime column from your month and year
df['date']=pd.to_datetime(df.year.astype(str)+df.month,format= '%Y%B')
# And finally we sort it!
df.sort_values('date')
结果是这样的
month year prec date
4 January 1961 5.000000 1961-01-01
3 February 1961 2.982143 1961-02-01
0 April 1961 1.510000 1961-04-01
1 August 1961 1.293548 1961-08-01
2 December 1961 3.658065 1961-12-01
5 January 1962 6.000000 1962-01-01
笔记:
如果您想按月份专门排序,您可以将月份列更改为其数值,使用以下代码:
df['month']=pd.to_datetime(df.month,format= '%B').dt.month
df.sort_values('month')
你会得到
month year prec
4 1 1961 5.000000
5 1 1962 6.000000
3 2 1961 2.982143
0 4 1961 1.510000
1 8 1961 1.293548
2 12 1961 3.658065
推荐阅读
- python - 我需要高效的 Django ORM 代码来减少查询命中
- php - 当网站在线上传时,PHP 时区会变得混乱
- highcharts - 显示全屏后渐变色消失
- python - 获取“UnboundLocalError:分配前引用的局部变量'连接'”
- android - 在android中编写完整测试(Unit-Instrumented)的最佳实践是什么?
- javascript - 添加“onmouseenter”(悬停)音频效果,但除非我先单击,否则它不会在 chrome 中播放?
- opencv - 为什么我不能用 opencv 仿射变换翻转图像?
- android - 处理简单新闻应用程序视图的最佳实践是什么?
- r - 规范化 R 中的每一列
- javascript - JS嵌套array.map