我有一个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多行。我需要-
- 检查数据是否按日期排序
- 如果没有,则按日期排序
有人能帮我吗?
非常感谢
将DataFrame.sort_values
与key
参数一起使用,并将值转换为日期时间:
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')