繁体   English   中英

Python:对列的子部分进行排序

[英]Python: Sort subsection of columns

假设我们有以下数据框:

Label1  2016-03-31  2016-05-31  2016-04-30
0   A   A1              1            6
1   B   B1              3            4
2   C   C2              5            7
3   D   D1              7            2
4   E   E4              9            4
5   F   F1              11           6

可以计算如下

import pandas as pd
import numpy as np
A = pd.DataFrame([['A','A1',1, 6], ['B','B1' ,3,4], ['C', 'C2', 5,7], ['D','D1',7,2], ['E','E4',9,4], ['F','F1',11,6]], columns=['Label1',pd.to_datetime('2016-03-31') , pd.to_datetime('2016-05-31'),pd.to_datetime('2016-04-30')])

我想知道是否可以根据最后三列的日期标签对数据框进行排序。 我希望最终结果看起来像

Label1  2016-03-31  2016-04-30 2016-05-31   
0   A   A1              6            1
1   B   B1              4            3
2   C   C2              7            5
3   D   D1              2            7
4   E   E4              4            9
5   F   F1              6            11

这是一种方法:

s=pd.to_datetime(A.columns,errors='coerce').dropna()
A[A.columns.difference(s,sort=False).union(sorted(s),sort=False)]

  Label1 2016-03-31 00:00:00  2016-04-30 00:00:00  2016-05-31 00:00:00
0      A                  A1                    6                    1
1      B                  B1                    4                    3
2      C                  C2                    7                    5
3      D                  D1                    2                    7
4      E                  E4                    4                    9
5      F                  F1                    6                   11

这应该有效:

new_cols = list(df.columns[:-3]) + list(df.columns[-3:].sort_values())

df[new_cols]

输出:

  Label1 2016-03-31  2016-04-30  2016-05-31
0      A         A1           6           1
1      B         B1           4           3
2      C         C2           7           5
3      D         D1           2           7
4      E         E4           4           9
5      F         F1           6          11

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM