所以我有很多公开交易股票的数据.每个数据行都包含一个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] 举报,一经查实,本站将立刻删除。