大熊猫:合并具有相同列名的大熊猫列

时间:2020-11-12 10:28:52

标签: python-3.x pandas

如果我们有以下df,

df

    A   A   B   B   B
0  10   2   0   3   3
1  20   4  19  21  36
2  30  20  24  24  12
3  40  10  39  23  46

如何合并具有相同名称的列的内容? 例如

    A   B  
0  10   0   
1  20  19  
2  30  24
3  40  39
4  2   3
5  4   21
6  20  24
7  10  23
8  Na  3
9  Na  36
10 Na  12
11 Na  46

我尝试过groupbymerge,但都没有做这项工作。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

如果列名重复,则可以将DataFrame.meltconcat一起使用:

df = pd.concat([df['A'].melt()['value'], df['B'].melt()['value']], axis=1, keys=['A','B'])
print (df)
       A   B
0   10.0   0
1   20.0  19
2   30.0  24
3   40.0  39
4    2.0   3
5    4.0  21
6   20.0  24
7   10.0  23
8    NaN   3
9    NaN  36
10   NaN  12
11   NaN  46

编辑:

uniq = df.columns.unique()
df = pd.concat([df[c].melt()['value'] for c in uniq], axis=1, keys=uniq)
print (df)
       A   B
0   10.0   0
1   20.0  19
2   30.0  24
3   40.0  39
4    2.0   3
5    4.0  21
6   20.0  24
7   10.0  23
8    NaN   3
9    NaN  36
10   NaN  12
11   NaN  46