python - 在 for 循环中连接数据帧
问题描述
我写了一个类来抓取公共假期数据,但我想用很多年来迭代我的类,比如:
outputt_path = "C:/Users/N000193384/Downloads/countries/"
recent_years = ["2015", "2016", "2017", "2018"]
for year in recent_years :
PBC = Event_Scraper("italy", year, outputt_path)
df = PBC._read_html_()
df = df.append(df)
我的班级取了国家的名字和年份, outputt_path 在那里没用。
_read_html_() 构建一个干净的数据框,我想附加每个数据框。
这是一年的数据框示例:
Date Holiday Name Holiday Type
0 2018-01-01 New Year's Day National holiday
1 2018-01-06 Epiphany National holiday
2 2018-03-20 March Equinox Season
3 2018-03-30 Good Friday Observance
4 2018-04-01 Easter Day National holiday
解决方案
您可以创建数据框列表,并继续将每年数据的新数据框添加到该列表中。完成数据抓取后,您可以将它们连接到一个数据帧中,如下所示:
dfs = []
for year in recent_years :
PBC = Event_Scraper("italy", year, outputt_path)
df = PBC._read_html_()
dfs.append(df)
final_df = pd.concat(dfs)
在数据帧上追加或执行 concat 是一项昂贵的操作,因为 Pandas 需要为新数据帧分配内存并复制所有数据,因此在循环中多次执行此操作会很昂贵。这样做可以节省开销,因为您只会这样做一次。
推荐阅读
- linux - 使用 SIGSTOP 和 SIGCONT 在 Bash 中处理并发文件写入
- css - 背景图像在使用 flexbox 的移动屏幕中无法正确调整大小
- spring - Spring Boot PasswordEncoder.matches 始终为 false
- powershell - 如何在 Windows Server 2012 中使用 Powershell 5 检查 Windows 服务的启动类型是“自动”还是“自动延迟”
- swift - 如何在 swift 中将正文添加到 https 请求
- python - 使用 Python/BeautifulSoup 从 HTML 中提取与文本一致的链接
- javascript - 如何将 Material-UI Autocomplete 与 react-virtualized 一起使用?
- latex - 如何在 MathJax 中绘制一个矩形?
- reactjs - 为 Azure 中托管的 create-react-app 设置环境变量不起作用
- julia - Plots.jl:删除系列图例,保留颜色条