Skip to main content
 首页 » 编程设计

python之使用 Pandas 按升序连接值

2025年05月04日19yjmyzz

我有一个包含一些列的 DataFrame。这些列是:A1、A2、A3。我想创建一个新列,我们将其命名为“CON”。新列是一个由 A1、A2、A3 和分隔符连接而成的字符串。串联按列值的值排序。

例如:

data = pd.DataFrame({  
    'A1' : ['b1', 'a1', 'a2'],  
    'A2' : ['b2', 'a3', 'b1'], 
    'A3' : ['c2', 'a2', 'a1'] 
  }) 
 
data['CON'] = sortedConcat(data['A1'], data['A2'], data['A3']) 

预期的结果是:

   A1  A2  A3       CON 
0  b1  b2  c2  b1-b2-c2 
1  a1  a3  a2  a1-a2-a3 
2  a2  b1  a1  a1-a2-b1 

我试图逐行循环整个数据帧,将值提取到列表中,对其进行排序并最终创建结果。它非常慢并且导致了难看的代码。有没有更有效的方法?

请您参考如下方法:

使用DataFrame.apply使用 join 并排序:

data['CON'] = data.apply(lambda x: '-'.join(sorted(x)), axis=1) 

替代列表理解:

data['CON'] = ['-'.join(sorted(x)) for x in data.values] 

print (data) 
   A1  A2  A3       CON 
0  b1  b2  c2  b1-b2-c2 
1  a1  a3  a2  a1-a2-a3 
2  a2  b1  a1  a1-a2-b1