[英]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.