如何高效将Pandas单行多数据点拆分为独立多行且不新增列
实现方法
直接用Pandas内置的字符串拆分和行展开方法就能实现,逻辑简单效率高,不需要正则处理:
import pandas as pd # 你的示例数据 df = pd.DataFrame({'Green Bay Packers' : ['30-18-0', '5-37', '10-71' ], 'Chicago Bears' : ['45-26-1', '5-20', '10-107']}, index=['Att - Comp - Int', 'Sacked - Yds Lost', 'Penalties - Yards']) # 1. 所有列按-拆分字符串为列表,同时去除拆分后元素两端的冗余空格 df = df.apply(lambda col: col.str.split('-').apply(lambda lst: [i.strip() for i in lst])) # 2. 对索引按分隔符「 - 」(带前后空格)拆分并展开为新索引 new_index = df.index.str.split(' - ').explode() # 3. 对所有列的列表执行行展开,替换为新索引 result = df.apply(pd.Series.explode).set_axis(new_index, axis=0) # 可选:如果需要把值转为整数类型方便后续计算 result = result.astype(int)
运行后输出的result和你期望的结果完全一致。这个方法兼容任意数量的球队列,不需要针对单个字段做适配,新增列会自动处理。
内容的提问来源于stack exchange,提问作者moeses
相关产品推荐
相关产品推荐

