我有一个看起来像这样的pandas Dataframe:
df
A.1 B.1 C.1 A.2 B.2 C.2 A.3 B.3 C.3
1 a m 4 d p 7 g s
2 b n 5 e q 8 h t
3 c o 6 f r 9 i u
我希望将包含相似名称的所有列合并到同一列中。 所以输出将是这样的DataFrame:
df
A B C
1 a m
2 b n
3 c o
4 d p
5 e q
6 f r
7 g s
8 h t
9 i u
最有效/优雅的方法是什么?
答案 0 :(得分:1)
这是一种方法,将您的列转换为多索引和取消堆栈。
In [220]: mult_index = [tuple(x.split('.')) for x in df.columns]
In [221]: df.columns = pd.MultiIndex.from_tuples(mult_index)
In [222]: df.stack()
Out[222]:
A B C
0 1 1 a m
2 4 d p
3 7 g s
1 1 2 b n
2 5 e q
3 8 h t
2 1 3 c o
2 6 f r
3 9 i u