给定这个数据框:
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 的调整!
