如何使用pandas按多分隔符拆分Excel单元格提取NCAAF对阵队伍
实现代码
直接使用以下代码即可完成两阶段的清洗需求:
import pandas as pd # 读取原始数据 df = pd.read_excel('ActionNetwork.xlsx') # 第一阶段:提取对阵信息到Matchups列,同时支持AM/PM分隔 # 正则匹配AM/PM后的空白位置分割,取后半段作为对阵内容 df['Matchups'] = df['Scheduled'].str.split(r'(?<=[AP]M)\s+', expand=True)[1] # 第二阶段:拆分两支队伍为单独行,得到最终输出 # 按vs分隔对阵内容为列表,展开为单独行 df = df.assign( Matchups=df['Matchups'].str.split(r'\s+vs\s+') ).explode('Matchups').reset_index(drop=True) # 可选:输出到新Excel文件 df.to_excel('清洗后_ActionNetwork.xlsx', index=False) print(df)
代码说明
- 你原来的
split('PM | AM')写法不生效,是因为Python原生字符串split方法不支持|代表或逻辑,这里使用pandas字符串方法内置的正则规则实现多分隔符匹配 (?<=[AP]M)是正则正向回顾断言,只会匹配前面是AM或PM的位置,不会丢失时间信息也不会误切割其他内容explode方法会将列表形式的对阵队伍拆分为独立行,其余列内容自动对应复制,完全符合你要的最终输出效果
内容的提问来源于stack exchange,提问作者RookiePython
相关产品推荐
相关产品推荐

