python - 从循环中保存多个数据帧
问题描述
我一直在寻找解决问题的方法,但我找到的所有答案都在答案末尾使用 print() ,并且没有按我的意愿保存数据帧。
下面我有一个(几乎)可以运行的代码,可以打印 3 个单独的表格。如何将这三个表保存在 3 个单独的数据框中,名称为 matches_october、matches_november 和 matches_december?
我的代码中的最后一行没有像我希望的那样工作。我希望很清楚我想要代码做什么(在循环中的 3 轮结束时保存一个数据帧)
import pandas as pd
import requests
from bs4 import BeautifulSoup
base_url = 'https://www.basketball-reference.com/leagues/NBA_2019_games-'
valid_pages = ['october','november','december']
end = '.html'
for i in valid_pages:
url = '{}{}{}'.format(base_url, i, end)
res = requests.get(url)
soup = BeautifulSoup(res.content,'lxml')
table = soup.find_all('table')[0]
df = pd.read_html(str(table))
print(df)
matches + valid_pages = df[0]
解决方案
你可以这样,但这不是很健壮(而且相当难看)。
if i == 'october':
matches_october = pd.read_html(str(table))
if i == 'november':
# so on and so forth
更优雅的解决方案是使用字典。在循环之前,声明matches = {}
. 然后,在每次迭代中:
matches[i] = pd.read_html(str(table))
然后您可以通过matches['october']
.
推荐阅读
- javascript - 为我定义斐波那契序列函数中的含义 a=b 和 b=sum ,有人可以解释一下他们的工作吗
- r - 无法使用 scale_x_discrete 向我的 ggplot 的 x 轴添加标签
- android - 如何在 android 10 中从后台启动活动 - android Q - MIUI 11
- c# - 列表方法中的错误说 MultipleActiveResultsSets
- prometheus - Grafana 添加 Prometheus 数据源,无访问选项
- javascript - 根据选定的下拉值显示 div
- flutter - Flutter:使用泛型创建小部件时出现子类型错误
- python - Python 连接到 Exchange /w Windows 身份验证
- android - 带有 Flutter 的 Rive(flare) 文件显示并在 QEMU Android 模拟器上运行良好,但不会在真实 Android 设备中的内置 APK 上显示
- android - 如果没有 @Provides-annotated 方法就无法提供,组件中存在具有匹配键的绑定