我有6列的数据帧,其中有2个主要类别var1和var 2。我想获取数据框的列是什么样的:
var1(t-3) var1(t-2) var1(t-1) var2(t-3) var2(t-2) var2(t-1)
var1(t-3) var2(t-3) var1(t-2) var2(t-2) var1(t-1) var2(t-1)
-0.37 0.13 -0.46 0.38 -0.28 -1.40
-0.46 0.38 -0.28 -1.40 -0.31 0.04
-0.28 -1.40 -0.31 0.04 -0.26 -0.71
-0.31 0.04 -0.26 -0.71 -0.19 -0.85
-0.26 -0.71 -0.19 -0.85 -0.23 -2.34
-0.19 -0.85 -0.23 -2.34 -0.23 -2.41
-0.23 -2.34 -0.23 -2.41 -0.22 -0.75
答案 0 :(得分:0)
通过自定义lambda函数按sorted
创建新的列顺序:
c = sorted(df.columns, key = lambda x: x.split('(')[0])
或(
到int
之前更常见的转换数字:
c = sorted(df.columns, key = lambda x: int(x.split('(')[0].replace('var', '')))
df = df[c]
print (df)
var1(t-3) var1(t-2) var1(t-1) var2(t-3) var2(t-2) var2(t-1)
0 -0.37 -0.46 -0.28 0.13 0.38 -1.40
1 -0.46 -0.28 -0.31 0.38 -1.40 0.04
2 -0.28 -0.31 -0.26 -1.40 0.04 -0.71
3 -0.31 -0.26 -0.19 0.04 -0.71 -0.85
4 -0.26 -0.19 -0.23 -0.71 -0.85 -2.34
5 -0.19 -0.23 -0.23 -0.85 -2.34 -2.41
6 -0.23 -0.23 -0.22 -2.34 -2.41 -0.75