微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 在pandas中对列进行排序,然后对另一列进行排序,同时保持前一列的排序

所以我有很多公开交易股票的数据.每个数据行都包含一个id,一个日期和一些其他信息.当然,股票可能在数据框中出现多次(即Google可能有几个条目对应于价格更新的不同日期).

我希望能够对id进行排序,然后对每个排序的块排序日期.

注意:为了示例,排序按升序完成.

    id        date price
0  123  2015/01/13     x
1  114  2017/02/15     y
2   12  2016/12/02     z
3  123  1996/04/26     w
4  114  2014/02/23     u
5  114  1995/05/25     v
@H_404_11@

对ID进行排序给出:

    id        date price
0   12  2016/12/02     z
1  123  2015/01/13     x
2  123  1996/04/26     w
3  114  2017/02/15     y
4  114  2014/02/23     u
5  114  1995/05/25     v
@H_404_11@

在ID固定的时候对日期进行排序给出:

    id        date price
0   12  2016/12/02     z
1  123  1996/04/26     w
2  123  2015/01/13     x
3  114  1995/05/25     v
4  114  2014/02/23     u
5  114  2017/02/15     y
@H_404_11@

解决方法:

看来你需要DataFrame.sort_values

df['date'] = pd.to_datetime(df['date'])
df = df.sort_values(['id','date'])
print (df)
    id       date price
2   12 2016-12-02     z
5  114 1995-05-25     v
4  114 2014-02-23     u
1  114 2017-02-15     y
3  123 1996-04-26     w
0  123 2015-01-13     x
@H_404_11@

或者如果id列是字符串:

df['id'] = df['id'].astype(str)
df['date'] = pd.to_datetime(df['date'])
df = df.sort_values(['id','date'])
print (df)
    id       date price
5  114 1995-05-25     v
4  114 2014-02-23     u
1  114 2017-02-15     y
2   12 2016-12-02     z
3  123 1996-04-26     w
0  123 2015-01-13     x
@H_404_11@

您还可以对一列降序和另一列升序进行排序:

df['id'] = df['id'].astype(str)
df['date'] = pd.to_datetime(df['date'])
df = df.sort_values(['id','date'], ascending=[False, True])
print (df)
    id       date price
3  123 1996-04-26     w
0  123 2015-01-13     x
2   12 2016-12-02     z
5  114 1995-05-25     v
4  114 2014-02-23     u
1  114 2017-02-15     y
@H_404_11@
                
                                 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐