Python 如果数据帧中的列名相同,则连接列

Python 如果数据帧中的列名相同,则连接列,python,pandas,dataframe,Python,Pandas,Dataframe,我已尝试在堆栈上重新搜索,但无法找到问题的解决方案 如果列具有相同的列名,我希望将它们连接起来: 例如: input = { 'A' : [0,1,0,1,0], 'B' : [0,1,1,1,1], 'C':[1,1,1,1,0], 'D' : [1,1,0,0,0], 'E' : [1,0,1,0,1]} df = pd.DataFrame(input) df.columns = ['A','B','C','C','B'] A B C C B 0 0

我已尝试在堆栈上重新搜索,但无法找到问题的解决方案

如果列具有相同的列名,我希望将它们连接起来:

例如:

input = { 'A' : [0,1,0,1,0], 'B' : [0,1,1,1,1], 'C':[1,1,1,1,0],
          'D' : [1,1,0,0,0], 'E' : [1,0,1,0,1]}

df = pd.DataFrame(input)
df.columns = ['A','B','C','C','B']

   A  B  C  C  B
0  0  0  1  1  1
1  1  1  1  1  0
2  0  1  1  0  1
3  1  1  1  0  0
4  0  1  0  0  1
期望输出:

   A    B    C
0  0  0;1  1;1
1  1  1;0  1;1
2  0  1;1  1;0
3  1  1;0  1;0
4  0  1;1  0;0
   A    B    C
0  0  0;1  1;1
1  1  1;0  1;1
2  0  1;1  1;0
3  1  1;0  1;0
4  0  1;1  0;0

非常感谢任何指针。

您可以按列名称分组,对于重复项,可以获取数据帧,因此使用
apply
join
进行每行连接:

DF = DF.astype(str).groupby(DF.columns, axis=1).agg(lambda x: x.apply(';'.join, 1))
或:


您可以尝试以下代码:

def function(x):
    return x.apply(';'.join, 1)


DF = DF.astype(str).groupby(DF.columns, axis=1).agg(function)
您可以,groupby,连接字符串并转置回:

df.T.astype('str').groupby(level=0).agg(';'.join).T
输出:

df.T.astype('str').groupby(level=0).agg(';'.join).T
   A    B    C
0  0  0;1  1;1
1  1  1;0  1;1
2  0  1;1  1;0
3  1  1;0  1;0
4  0  1;1  0;0