我有一个这样的数据框:
df = pd.DataFrame(pd.DataFrame([[1,2,3,4],[5,6,7,8],[9,10,11,12]],columns=["X_a","Y_b","X_b","Y_a"]))
X_a Y_b X_b Y_a
0 1 2 3 4
1 5 6 7 8
2 9 10 11 12
现在我基本上通过基于_
(下划线)拆分列来创建具有多级列的数据框,并基于首字母大写字母对它们进行分组。上述数据框的这种转换的一个例子是:
X Y
a b a b
0 1 3 4 2
1 5 7 8 6
2 9 11 12 10
我尝试寻找解决方案,但我得到的最接近的是this answer,这并不能完全解决我的问题。那么,除了提取柱子的蛮力方式,然后拆分它们并最终将它们排列在一起之外,是否有任何有效或更快的方法在Pandas中执行此操作?任何帮助将不胜感激。
答案 0 :(得分:5)
到位
df.columns = df.columns.str.split('_', expand=True)
df.sort_index(axis=1)
X Y
a b a b
0 1 3 4 2
1 5 7 8 6
2 9 11 12 10
<强>内联强>
不改变原来的
pd.DataFrame(
df.values, columns=df.columns.str.split('_', expand=True)).sort_index(1)
X Y
a b a b
0 1 3 4 2
1 5 7 8 6
2 9 11 12 10