Skip to main content
 首页 » 编程设计

python之Pandas 连接不同行的值

2025年05月04日11xiaohuochai

给定这个数据框:

import pandas as pd 
a=pd.DataFrame({'number':[2,2,3],'A':['abc','def','ghi']}) 
 
a 
    A   number 
0   abc     2 
1   def     2 
2   ghi     3 

我需要按索引顺序连接具有相同数值的行中的值,用';分隔'.

期望的结果:

    A           number 
0   abc; def    2; 2 
2   ghi         3 

到目前为止,我认为我可以隔离数据帧,然后以某种方式尝试像这样将它们连接在一起:

a['rank']=a.groupby('number').rank() 
a1=a.loc[a['rank']==1] 
a2=a.loc[a['rank']==2] 
b=a1.merge(a2,on='number',how='left') 
b=b.fillna('') 
 
b 
    A_x     number  rank_x  A_y     rank_y 
0   abc     2   1.0     def     2 
1   ghi     3   1.0      

..然后它只是每列这样的事情:

b['A'] = b['A_x']+'; '+b['A_y'] 

...但是是否有更简洁的方法来执行此操作(也许一次针对所有列)?

提前致谢!

请您参考如下方法:

使用groupby + agg -

a.astype(str).groupby(a.number, as_index=False).agg('; '.join) 
 
          A number 
0  abc; def   2; 2 
1       ghi      3 

感谢 MaxU 的调整!