python - 按工作日对 Pandas 数据框进行排序

标签 python python-3.x pandas sorting dataframe

如何按工作日名称对 DataFrame 进行排序?我不能使用 pd.to_datetime() 方法,因为我的日期不是数字。

    Date    Transactions
0   Friday  140.652174
1   Monday  114.000000
2   Saturday    208.826087
3   Sunday  140.565217
4   Thursday    118.217391
5   Tuesday     107.826087
6   Wednesday   105.608696

最佳答案

您可以将列值转换为 ordered categoricals , 所以可以使用 sort_values :

cats = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
df['Date'] = pd.Categorical(df['Date'], categories=cats, ordered=True)
df = df.sort_values('Date')
print (df)
        Date  Transactions
1     Monday    114.000000
5    Tuesday    107.826087
6  Wednesday    105.608696
4   Thursday    118.217391
0     Friday    140.652174
2   Saturday    208.826087
3     Sunday    140.565217

或者使用 set_indexDate 列创建索引, 然后 reindex最后 reset_index :

注意:
解决方案仅在列值唯一时才有效

df = df.set_index('Date').reindex(cats).reset_index()
print (df)

        Date  Transactions
0     Monday    114.000000
1    Tuesday    107.826087
2  Wednesday    105.608696
3   Thursday    118.217391
4     Friday    140.652174
5   Saturday    208.826087
6     Sunday    140.565217

关于python - 按工作日对 Pandas 数据框进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53189216/

相关文章:

python - 使用 python 的 Google 搜索偶尔不准确并且存在类型错误

python - 无法在 Python 3.7 中导入 PyQtChart

python - Pandas 报告组中的前 n 名和枢轴

python - 用 Pandas 计算连胜纪录

python - 在处理调查数据时,如何合并 pandas 中的列?

python - Wagatail 嵌入 YouTube - 阻止相关视频显示

python - 在多台机器上运行进程(主要是Python)

python - DateTimeField 收到一个天真的日期时间

python - 有什么方法可以替换 break 以提前退出 for 循环吗?

python 解析文本文件中的条件多行