【问题标题】:pandas rows gets shifted after I try to sort我尝试排序后,熊猫行发生了变化
【发布时间】:2017-06-08 15:22:49
【问题描述】:

我有这个头部看起来像这样的数据框:

Out[8]:
        Date    Value
0   2016-06-30  481100.0
1   2016-05-31  493800.0
2   2015-12-31  514000.0
3   2015-10-31  510700.0

我想使用 Dates 列作为索引,然后根据 Dates 的顺序对行进行排序。

当我尝试根据第一列对其进行排序时:

df.set_index('Date', inplace=True)

头部看起来像这样:

            Value
Date    
2016-06-30  481100.0
2016-05-31  493800.0
2015-12-31  514000.0
2015-10-31  510700.0

不仅数据帧没有按日期排序,而且标头也乱了:

为什么会发生这种情况,我应该如何纠正它?

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    你应该使用sort_values:

    In [3]: df
    Out[3]: 
             Date     Value
    0  2016-06-30  481100.0
    1  2016-05-31  493800.0
    2  2015-12-31  514000.0
    3  2015-10-31  510700.0
    
    In [4]: df = df.sort_values(by='Date')
    
    In [5]: df
    Out[5]: 
             Date     Value
    3  2015-10-31  510700.0
    2  2015-12-31  514000.0
    1  2016-05-31  493800.0
    0  2016-06-30  481100.0
    

    编辑: 排序后,您可以将所需的列设置为数据框的索引:

    In [6]: df.set_index('Date', inplace=True)
    
    In [7]: df
    Out[7]: 
                   Value
    Date                
    2015-10-31  510700.0
    2015-12-31  514000.0
    2016-05-31  493800.0
    2016-06-30  481100.0
    

    【讨论】:

    • 谢谢。您能否提供一些解释:(1)为什么我得到这个输出和(2)set_index的正确用例是什么?我也想使用 Dates 列作为索引,并根据 Dates 的顺序对行进行排序
    • 此输出只是对列进行排序的结果,在本例中为Dateset_index 仅适用于索引,将列设置为数据框的索引。订购后,您可以再次将 Date 列设置为数据框的索引。
    • 这不是乱七八糟,只是 pandas 在输出中显示索引列的方式。
    猜你喜欢
    • 2022-12-16
    • 2016-07-03
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 2018-08-25
    • 2014-10-07
    相关资源
    最近更新 更多