Pandas遍历DataFrame时如何利用Team_web列值为NFL球队名单CSV文件命名
解决方法:使用当前迭代行的
Team_web值而非整个列 你的问题核心出在CSV文件名的拼接逻辑上:在iterrows()循环中,df_teams['Team_web']调用的是整个DataFrame的Team_web列(一个Series对象),而不是当前正在遍历的那一行的Team_web值。这就导致字符串拼接时试图把普通字符串和Series对象组合,触发了类型错误。
修正后的完整代码
import pandas as pd # 爬取球队名单 for index, row in df_teams.iterrows(): url = row['Team_url'] # 提取页面中的表格 dfs = pd.read_html(url) # 获取第一个表格作为球队名单 df_roster = dfs[0] # 检查名单输出(可选) print(df_roster) # 写入CSV文件:使用当前行的Team_web值命名 df_roster.to_csv(f'roster_{row["Team_web"]}.csv', sep=',', index=False)
关键改动说明
- 替换列调用为行调用:把
df_teams['Team_web']改成row['Team_web']——row是iterrows()返回的当前行的Series对象,直接通过row['Team_web']就能拿到当前球队对应的Team_web字符串值,完全适配文件名的拼接需求。 - 使用f-string优化格式(可选):用Python的f-string格式化文件名,比传统字符串拼接更简洁易读,你也可以用传统写法:
'roster_' + row['Team_web'] + '.csv',效果完全一致。
原代码报错的原因
df_teams['Team_web']返回的是整个球队列的Series集合,当你尝试把它和'roster'、'.csv'这类普通字符串拼接时,Python无法处理“字符串 + Series”的组合操作,因此抛出了TypeError: argument of type 'method' is not iterable的错误。而row['Team_web']是单个字符串,完全符合文件名的拼接要求。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

