检查按年份和季度排序的pandas数据帧



我有一个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

编辑:如果值为单调_递增:,则可以使用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')

最新更新