检查按年和季度 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 多行。我需要 -
- 检查数据是否按日期排序
- 如果没有,则按日期排序
有人可以帮我解决这个问题吗?
非常感谢
将 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
编辑:如果值为 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')
我有一个如下所示的 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
编辑:如果值为 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')