Python - 在两列上排序数据帧不起作用

时间:2016-03-17 07:46:47

标签: python sorting pandas

基于两列排序数据时遇到问题!

一般情况下,我想在数据框上设置一个时区更改的时区。不幸的是

tz.localize("Europe/Berlin", infer_dst=True) 

因数据未正确排序而引发错误(至少我认为这就是原因..)

所以我尝试了以下数据框的排序:

index                value   test1                 test2
2015-10-25 02:00:00   10     2015-10-25 02:00:00   0
2015-10-25 02:00:00   20     2015-10-25 02:00:00   1
2015-10-25 02:15:00   30     2015-10-25 02:15:00   0
2015-10-25 02:15:00   40     2015-10-25 02:15:00   1
2015-10-25 02:30:00   60     2015-10-25 02:30:00   0
2015-10-25 02:30:00   70     2015-10-25 02:30:00   1
2015-10-25 02:45:00   80     2015-10-25 02:45:00   0
2015-10-25 02:45:00   90     2015-10-25 02:45:00   1

获取以下输出

index                value   test1                 test2
2015-10-25 01:45:00   5     2015-10-25 01:45:00   0
2015-10-25 02:00:00   10     2015-10-25 02:00:00   0
2015-10-25 02:15:00   30     2015-10-25 02:15:00   0    
2015-10-25 02:30:00   60     2015-10-25 02:30:00   0
2015-10-25 02:45:00   80     2015-10-25 02:45:00   0
2015-10-25 02:00:00   20     2015-10-25 02:00:00   1
2015-10-25 02:15:00   40     2015-10-25 02:15:00   1
2015-10-25 02:30:00   70     2015-10-25 02:30:00   1
2015-10-25 02:45:00   90     2015-10-25 02:45:00   1
2015-10-25 03:00:00   90     2015-10-25 03:00:00   1

我试过了:

df.sort(["test1","test2"],ascending=[1, 1])
但是,由于某种原因,订单不会改变。有什么想法吗?

嗨,我扩展了所需的输出

1 个答案:

答案 0 :(得分:0)

您只需更改列的顺序并按["test2","test1"]排序:

>>> df.sort(["test2","test1"],ascending=[1, 1])
                 index  value                test1  test2
0  2015-10-25 02:00:00     10  2015-10-25 02:00:00      0
2  2015-10-25 02:15:00     30  2015-10-25 02:15:00      0
4  2015-10-25 02:30:00     60  2015-10-25 02:30:00      0
6  2015-10-25 02:45:00     80  2015-10-25 02:45:00      0
1  2015-10-25 02:00:00     20  2015-10-25 02:00:00      1
3  2015-10-25 02:15:00     40  2015-10-25 02:15:00      1
5  2015-10-25 02:30:00     70  2015-10-25 02:30:00      1
7  2015-10-25 02:45:00     90  2015-10-25 02:45:00      1