拆分DataFrame列为两列时代码无报错但DataFrame未变化的问题
无报错但表结构无变化的核心原因
两点完全符合pandas运行逻辑、但极易忽略的非语法问题:
- 所有DataFrame的列运算、拼接、拆分操作,默认都会返回全新的表对象,不会直接修改原表。你代码里的
players_log.join(...)运算结果没有赋值给任何变量,执行完就直接被内存回收,原有的players_log从始至终没有被改动,因此不会触发报错,也看不到任何结构变化。 - 你在所有拆分操作执行前就通过
game_log = players_log.head()取了前5行数据,哪怕后续完成了表结构修改,game_log存储的还是拆分前的旧数据,打印时自然看不到拆分效果。
修正后的可运行代码
import requests import pandas as pd url = 'https://www.teamrankings.com/nba/player/clint-capela/game-log' html = requests.get(url).content get_log = pd.read_html(html) players_log = get_log[0] # 直接拆分目标列生成对应命名的新列,无需额外拼接 players_log[['FGM', 'FGA']] = players_log['FGM-FGA'].str.split('-', 1, expand=True) # 完成所有列修改后再提取前5行的日志数据 game_log = players_log.head() # 验证表结构变化 players_log.info() print(game_log)
如果你坚持沿用原来的join写法,必须把拼接结果重新赋值给原变量,写法为:
players_log = players_log.join( players_log['FGM-FGA'].str.split('-', 1, expand=True).rename(columns={0:'FGM', 1:'FGA'}) )不赋值直接执行join和split的话,运算结果会直接被丢弃,不会对原表产生任何影响。
内容的提问来源于stack exchange,提问作者mcfadX
相关产品推荐
相关产品推荐

