检查按年和季度 pandas 数据框排序

check sorting by year and quarter pandas dataframe

我有一个如下所示的 df

     date      col1    col2
 0  2000 Q1    123     456
 1  2000 Q2    234     567
 2  2000 Q3    345     678
 3  2000 Q4    456     789
 4  2001 Q1    567     890

df 有 200 多行。我需要 -

  1. 检查数据是否按日期排序
  2. 如果没有,则按日期排序

有人可以帮我解决这个问题吗?

非常感谢

DataFrame.sort_valueskey 参数一起使用并将值转换为日期时间:

df = df.sort_values('date', key=lambda x: pd.to_datetime(x.str.replace('\s+', '')))
print (df)
      date  col1  col2
0  2000 Q1   123   456
1  2000 Q2   234   567
2  2000 Q3   345   678
3  2000 Q4   456   789
4  2001 Q1   567   890

编辑:如果值为 monotonic_increasing:

,您可以使用 Series.is_monotonic 进行测试
if not df['date'].is_monotonic:
    df = df.sort_values('date', key=lambda x: pd.to_datetime(x.str.replace('\s+', '')))

您可以将 date 列转换为 pd.Index(或将其定义为数据框的索引):

if not pd.Index(df['date']).is_monotonic_increasing:
    df = df.sort_values('date')