如何根据group by中赋值的数值,从小到大组合成一个长字符串

问题描述 投票:0回答:1

我有一个表,我想根据group by中赋值的数值,从小到大,组合成一个长字符串。

这是我的数据框:

df = pd.DataFrame({'RTG_CODE':['RTG0538','RTG0538','RTG0538','RTG0538','RTG0538','RTG0538','RTG0538','RTG350001','RTG350001','RTG350001','RTG353904','RTG353904','RTG353904','RTG353904','RTG353904','RTG373902','RTG373902','RTG373902','Baltic','Baltic','Baltic','RTG407002','RTG407002','RTG407002','RTG407002','RTG407002'],'ELEMENT': ['TM~WCO~BKBK','AY~JHGT~BKBK','AY~EHUY~BKBK','AY~RUYI~BKBK','FT~QQ~BKBK','CM~ROIP~BKBK','CM~PPOI~BKBK','TM~WCO~10030269','AY~SO-3.9-4.9.SOT96SD112~10030269','FT~SG~10030269','TM~WCO~KHKH','AY~HVQFN.SOT617CD35~KHKH','AY~WB-QFN-ADV~KHKH','AY~SG-QFN-5X5~KHKH','FT~3L/F~KHKH','TM~WCO~10030269','AY~HVSON.SOT782HA16~10030269','FT~SG~10030269','TM~WCO~10034140','AY~DHX2QFN-2.4-2.SOT1442AA1~10034140','FT~HM/F~10034140','TM~WCO~KHKH','AY~HVQFN.SOT617CD39~KHKH','AY~WB-QFN-ADV~KHKH','FT~DQ/F~KHKH','FTT~FT0010330035/F~KHKH'],'ASSIGNMENT': [-50,110,120,130,200,300,380,-50,130,200,-50,110,120,130,200,-50,120,200,-50,130,200,-50,120,130,200,250]})

df:

enter image description here

我想获得一个用于合并的列。

df_output = pd.DataFrame({'RTG_CODE': ['RTG0538','RTG350001','RTG353904','RTG373902','Baltic','RTG407002'],'MERGED': ['TM~WCO~BKBK::AY~JHGT~BKBK::AY~EHUY~BKBK::AY~RUYI~BKBK::FT~QQ~BKBK::CM~ROIP~BKBK::CM~PPOI~BKBK','TM~WCO~10030269::AY~SO-3.9-4.9.SOT96SD112~10030269::FT~SG~10030269','TM~WCO~KHKH::AY~HVQFN.SOT617CD35~KHKH::AY~WB-QFN-ADV~KHKH::AY~SG-QFN-5X5~KHKH::FT~3L/F~KHKH','TM~WCO~10030269::AY~HVSON.SOT782HA16~10030269::FT~SG~10030269','TM~WCO~10034140::AY~DHX2QFN-2.4-2.SOT1442AA1~10034140::FT~HM/F~10034140','TM~WCO~KHKH::AY~HVQFN.SOT617CD39~KHKH::AY~WB-QFN-ADV~KHKH::FT~DQ/F~KHKH::FTT~FT0010330035/F~KHKH']})

我想要的输出:

enter image description here

如有任何帮助,我们将不胜感激!

pandas dataframe group-by merge
1个回答
0
投票

看起来你希望你的字符串由

'::'
连接,所以我想你可以尝试:

df.groupby(['RTG_CODE'])['ELEMENT'].agg('::'.join).reset_index()

举个更简单的例子:

df = pd.DataFrame({'code':['hey','test','test','hi'], 'col':['a','b','c','d']})

   code col
0   hey   a
1  test   b
2  test   c
3    hi   d

df.groupby(['code'])['col'].agg('::'.join).reset_index()

结果:

   code   col
0   hey     a
1    hi     d
2  test  b::c
© www.soinside.com 2019 - 2024. All rights reserved.