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