python - 制作多行标题的熊猫数据框
问题描述
我尝试使用的熊猫数据框无法正确打印
from urllib.request import urlopen
from bs4 import BeautifulSoup
import pandas as pd
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
year = 2021
url = "https://www.basketball-reference.com/leagues/NBA_{}_per_game.html".format(year)
html = urlopen(url)
soup = BeautifulSoup(html, features='html.parser')
soup.findAll('tr', limit=2)
headers = [th.getText() for th in soup.findAll('tr', limit=2)[0].findAll('th')]
headers = headers[1:]
rows = soup.findAll('tr')[1:]
player_stats = [[td.getText() for td in rows[i].findAll('td')] for i in range(len(rows))]
stats = pd.DataFrame(player_stats, columns=headers)
stats.head(10)
with open('stats.txt', 'w') as f:
f.write(str(stats)
在输出中,它放置了前几个标题和行。然后在完成所有行之后,它会执行下一组标题
解决方案
我会在这里进一步说明 Octav 的观点。不仅让 pandas 写入文件,还让它解析表。
import pandas as pd
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
year = 2021
url = "https://www.basketball-reference.com/leagues/NBA_{}_per_game.html".format(year)
stats = pd.read_html(url)[0]
stats = stats[stats['Rk'].ne('Rk')] #<-- removes rows with the "headers"
stats.head(10)
stats.to_csv('stats.csv', index=False)
推荐阅读
- postgresql - Postgresql:删除连字符和空格
- firebase - Firebase Web - 在会话期间检查登录状态的正确方法
- javascript - 将带有多项选择的选项附加到简单选择中
- java - 使用 Google Sheets API v4 将新数据插入到 Google 电子表格顶部
- django - 使用 Puppet 到不同端口的 Nginx 代理路径
- php - 从 x509 文件中检索原始私钥
- python - 向量的 Numpy 网格
- report - 从多选轴中检索报告中的记录
- java - 匿名线程类无法访问非静态实例变量
- sql-server - 如何使用存储过程避免重复记录