如何在Pandas中将连续两行数据合并为一行?
解决方法
直接通过Pandas的分组合并功能就能实现需求,分两种情况处理:
情况1:保留原行号内容
如果需要保留每行开头的原始数字,用以下代码:
import pandas as pd # 构造你的Series数据 data = [ "1 Lycan-Ogre Magi-Bloodseeker-Zeus-Tiny-WIN", "2 Tidehunter-Spectre-Warlock-Razor-Marci-LOSE", "3 Spectre-Enigma-Dazzle-Razor-Tiny-WIN", "4 Medusa-Hoodwink-Tusk-Beastmaster-Enchantress-LOSE" ] s = pd.Series(data) # 按每两行分组,用|合并内容 merged = s.groupby(s.index // 2).apply(lambda group: ' | '.join(group)) # 重置新行号为从1开始 merged.index = merged.index + 1 # 输出结果 print(merged.to_string(header=False))
输出结果:
1 1 Lycan-Ogre Magi-Bloodseeker-Zeus-Tiny-WIN | 2 Tidehunter-Spectre-Warlock-Razor-Marci-LOSE 2 3 Spectre-Enigma-Dazzle-Razor-Tiny-WIN | 4 Medusa-Hoodwink-Tusk-Beastmaster-Enchantress-LOSE
情况2:仅保留对战内容(去掉原行号)
如果要得到你示例里不带原始数字的格式,先清理每行开头的数字再合并:
import pandas as pd data = [ "1 Lycan-Ogre Magi-Bloodseeker-Zeus-Tiny-WIN", "2 Tidehunter-Spectre-Warlock-Razor-Marci-LOSE", "3 Spectre-Enigma-Dazzle-Razor-Tiny-WIN", "4 Medusa-Hoodwink-Tusk-Beastmaster-Enchantress-LOSE" ] s = pd.Series(data) # 去掉每行开头的数字和空格 clean_s = s.str.replace(r'^\d+\s', '', regex=True) # 分组合并 merged_clean = clean_s.groupby(clean_s.index // 2).apply(lambda x: ' | '.join(x)) merged_clean.index = merged_clean.index + 1 # 输出结果 print(merged_clean.to_string(header=False))
输出结果:
1 Lycan-Ogre Magi-Bloodseeker-Zeus-Tiny-WIN | Tidehunter-Spectre-Warlock-Razor-Marci-LOSE 2 Spectre-Enigma-Dazzle-Razor-Tiny-WIN | Medusa-Hoodwink-Tusk-Beastmaster-Enchantress-LOSE
内容的提问来源于stack exchange,提问作者RidzInside
相关产品推荐
相关产品推荐

