首页 > 解决方案 > 如何按月对数据帧进行排序/排序?

问题描述

所以我用多年(1961-2019)的月降水数据制作了这个数据框。但不知何故,我的数据框最终变得一团糟(查看图片)。有没有办法按月对我的数据进行排序?出于某种原因,我先是四月,然后是十一月,六月等,我不知道如何更改它。

在此处输入图像描述

标签: rdataframe

解决方案


你可能需要尝试这样的事情

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

推荐阅读