R 如何按月订购/排序数据帧?
所以我用多年(1961-2019)的月降水量数据制作了这个数据框架。但不知何故,我的数据帧最终变得一团糟(查看图片)。有没有办法按月对我的数据进行排序?由于某种原因,我得到了第一个四月,然后是十一月,六月等等,我不知道如何改变它R 如何按月订购/排序数据帧?,r,dataframe,R,Dataframe,所以我用多年(1961-2019)的月降水量数据制作了这个数据框架。但不知何故,我的数据帧最终变得一团糟(查看图片)。有没有办法按月对我的数据进行排序?由于某种原因,我得到了第一个四月,然后是十一月,六月等等,我不知道如何改变它 您可能需要尝试类似的方法 month year pp 1 April 1961 1.510 2 August 1961 1.239 3 December 1962 3.658 4 February 1962 2.982 将熊猫作为pd导入 从
您可能需要尝试类似的方法
month year pp
1 April 1961 1.510
2 August 1961 1.239
3 December 1962 3.658
4 February 1962 2.982
将熊猫作为pd导入
从日期时间导入日期时间
#在这里,我用您发布的示例日期制作了一个数据框
数据=[(1961年4月,1.5100000),(1961年8月,1.2935484),(1961年12月,3.6580645),(1961年2月,2.9821429),(1961年1月,5.0000000),(1962年1月,6.0000000)]
df=pd.DataFrame(数据,列=[“月”、“年”、“前”])
#因此,我们根据您的月份和年份创建一个新的datetime列
df['date']=pd.to_datetime(df.year.astype(str)+df.month,格式=“%Y%B”)
#最后我们把它分类!
df.sort_值(“日期”)
结果就是这样
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,格式='%B').dt.month
df.sort_值(“月”)
你会得到
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
这应该行得通
## create data
month <- c('April','August', 'December', 'February')
year <- c(1961, 1961, 1962, 1962)
pp <- c(1.51,1.239,3.658,2.982)
df <- cbind.data.frame(month, year, pp)
现在我们可以创建一个日期进行排序
## create date
df$date <- as.Date(paste(df$month, '01', df$year), format="%b %d %Y")
## sort dataframe by date
df <- df[order(df$date),]
如果您不关心年份,则可以将月份名称与该月份的实际数字相匹配,并根据该数字进行排序,如下所示:
df$month_number <- match(df$month,month.name)
df[order(df$month_number),]
1961年4月1.5100000 1961年8月1.2935484 1961年12月3.6580645 1961年2月4日2.982145 1961年1月5.0000000明白了,但是我如何在R Studio中使用pd.DataFrame函数?有我需要下载的软件包吗?对不起,我没有看到您正在使用R。因此,您可以使用
strtime
创建月份或日期时间列,如下所示:df[['date']]
df$month_number <- match(df$month,month.name)
df[order(df$month_number),]
month year pp date
4 February 1962 2.982 1962-02-01
1 April 1961 1.510 1961-04-01
2 August 1961 1.239 1961-08-01
3 December 1962 3.658 1962-12-01