如何组合具有相同名称的列?

时间:2018-01-17 10:03:06

标签: python pandas

考虑一个数据框,

    A   A   B   B                            

0 1 4 7 10
1 2 5 8 11
2 3 6 9 12

我想追加所有具有相同名称的列。 例如:

   A    B  

0 1 7
1 2 8
2 3 9
0 4 10
1 5 11
2 6 12

2 个答案:

答案 0 :(得分:0)

您可以在列中创建MultiIndex,然后按stack重新整形:

s = df.columns.to_series()
df.columns = [df.columns, s.groupby(s).cumcount()]
print (df)
   A     B    
   0  1  0   1
0  1  4  7  10
1  2  5  8  11
2  3  6  9  12

df = df.stack().sort_index(level=1).reset_index(drop=True)
print (df)
   A   B
0  1   7
1  2   8
2  3   9
3  4  10
4  5  11
5  6  12

答案 1 :(得分:0)

你可以

In [319]: pd.concat(x for _, x in df.groupby(df.columns.duplicated(), axis=1))
Out[319]:
   A   B
0  1   7
1  2   8
2  3   9
0  4  10
1  5  11
2  6  12
相关问题