使用 pandas 从 zip 中读取特定的 csv 文件

2023-12-02

这是我感兴趣的一个数据。

http://fenixservices.fao.org/faostat/static/bulkdownloads/Production_Crops_E_All_Data.zip

它由 3 个文件组成:

enter image description here

我想用 pandas 下载 zip 并从 1 个名为 Production_Crops_E_All_Data.csv 的文件创建 DataFrame

import pandas as pd
url="http://fenixservices.fao.org/faostat/static/bulkdownloads/Production_Crops_E_All_Data.zip"
df=pd.read_csv(url)

Pandas 可以下载文件,可以处理 zip 文件,当然也可以处理 csv 文件。但是,如何处理包含多个文件的存档中的 1 个特定文件呢?

现在我收到错误

ValueError: ('在压缩的 zip 文件 %s 中找到多个文件)

这篇文章没有回答我的问题,因为我在 1 个 zip 中有多个文件将压缩文件读取为 pandas DataFrame


从这个链接

try this

from zipfile import ZipFile
import io
from urllib.request import urlopen
import pandas as pd

r = urlopen("http://fenixservices.fao.org/faostat/static/bulkdownloads/Production_Crops_E_All_Data.zip").read()
file = ZipFile(io.BytesIO(r))
data_df = pd.read_csv(file.open("Production_Crops_E_All_Data.csv"), encoding='latin1')
data_df_noflags = pd.read_csv(file.open("Production_Crops_E_All_Data_NOFLAG.csv"), encoding='latin1')
data_df_flags = pd.read_csv(file.open("Production_Crops_E_Flags.csv"), encoding='latin1')

希望这可以帮助! 编辑:将 python3 StringIO 更新为 io.StringIO

编辑:更新了 urllib 的导入,将 StringIO 的用法更改为 BytesIO。另外你的 CSV 文件不是 utf-8 编码,我尝试了 latin1 并且有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 pandas 从 zip 中读取特定的 csv 文件 的相关文章

随机推荐

  • img.onerror 似乎不适用于 IE8

    我正在尝试从网址加载图像来检查互联网连接 当没有互联网连接时 它应该显示一个 dojo 警告对话框 这适用于 Firefox 但不适用于 IE8 以下是代码片段 var img new Image img src userGuideUrl1
  • 您可以从扩展程序访问 chrome:// 页面吗?

    当你编写manifest json文件时 你必须指定matches用于您的内容脚本 这http and https工作正常 但如果我尝试包括chrome 或其任何变体 我收到错误消息 指出我正在尝试对我的应用程序使用无效的方案matches
  • 如何防止 Visual Basic 2012 中以下代码的 SQL 注入

    我对如何防止 SQL 注入感到困惑 我在网上查看过 我是使用存储过程 还是创建变量 我完全迷失了 Try connection Open we got here so our connection to the db is sound ch
  • Windows Phone 8 模拟器仅返回雷蒙德位置

    我正在使用以下代码 Geolocator myGeolocator new Geolocator DesiredAccuracy PositionAccuracy High Geoposition myGeoposition await m
  • WPF - 跨线程事件

    我的问题是我想使用新线程在画布中添加项目 所以我有多个方法 底部的示例 它们生成例如图像并设置一些属性 然后他们应该通过事件回调生成的思考 以下是我调用的为画布生成想法的线程的一部分 Here I create the event in t
  • 将表名作为参数传递给 SqlCommand 的问题

    这个问题的目标是避免SQL注入 我有查询 选择 插入 更新 删除 当我需要发送表名作为参数时 我该怎么做 我将非常感谢你的帮助 insertCommand CommandText update tableName set code code
  • jQuery 可选定制

    我有一个 jQuery 可供选择 如下所示 它实际上是一个有序列表 有序列表位于名为 myBorderDiv 的 div 内 当我按下 control 并将鼠标悬停在项目上时 所有项目都会出现不需要的效果 在 IE8 中 如下图所示 如何克
  • PHP $_SESSION 标头重定向后为空

    当我进行标头重定向时 我丢失了 SESSION 中的数据 当我使用调试器完成此操作时 我可以在 exit 之前看到 SESSION 中的所有数据 登录 php 确保您正在使用该功能session start 在 if 语句之前myaccou
  • Google 表格:根据第 1 行中的日期隐藏列

    我没有在 Excel 或 Google Sheets 中编写脚本的经验 因此我尝试扩展一下 看看是否有解决我的问题的方法 我们在厨房改造业务中使用 Google 表格制作每周日历 我们从左到右组织几周 并在这些栏中列出我们当前正在从事的工作
  • 如何解决机器人框架中测试自动化的 ssl 证书错误

    通过机器人框架运行自动化测试时 我的 Web 应用程序出现 ssl 证书错误 我尝试了下面带有不同镶边选项的代码 但没有一个在有或没有布尔值的情况下也能工作 list Create List unsafely treat insecure
  • 打印数组元素

    以下 C 程序的预期输出是打印数组元素 但实际运行时却并非如此 include
  • Python 中的梯形规则

    我正在尝试在 Python 2 7 2 中实现梯形规则 我写了以下函数 def trapezoidal f a b n h float b a n s 0 0 s h f a for i in range 1 n s 2 0 h f a i
  • cherrypy/jquery CORS 麻烦

    我有一个基于 Cherrypy 的简单 Python Web 服务器 其资源应提供API 服务器有以下代码来提供CORS def CORS cherrypy response headers Access Control Allow Ori
  • 如何创建多个警报?

    我可以使用下面的代码创建和取消警报 我想创建多个警报 闹钟时间来自数组列表 在此数组列表中 我想为每个日期创建一个警报 按下取消按钮将仅取消当前警报 我该怎么做 public void onCreate Bundle savedInstan
  • Caffe:如果两层反向传播渐变到同一个底部斑点会发生什么?

    我想知道如果我有一个层生成一个底部斑点 该斑点进一步被两个后续层消耗 这两个层都会生成一些梯度来填充反向传播阶段的 Bottom diff 将两个梯度相加形成最终梯度吗 或者说 只有他们一个人能够活下去 根据我的理解 Caffe 层需要在用
  • FOS用户包认证

    How FOS 用户包通过此服务容器对用户进行身份验证 this gt container gt get security context gt getToken gt getUser 我想操纵身份验证过程 我应该在捆绑包中查看哪里 实际上
  • Android 设备安装新字体

    我需要在我的 Android 设备上安装泰米尔字体 是否可以在 Android 设备中安装新的 Unicode 字体 您可以将自己的字体嵌入到自己的应用程序中供自己使用 您无法将字体添加到现有设备 除非作为自定义固件构建的一部分 或者可能通
  • Swift 将 .uppercaseString 仅应用于字符串的第一个字母

    我正在尝试制作一个自动更正系统 当用户输入大写字母的单词时 自动更正不起作用 为了解决这个问题 我复制了键入的字符串 应用了 lowercaseString 然后比较它们 如果字符串确实输入错误 则应该更正该单词 然而 替换键入的单词的单词
  • 使用概念来选择类模板专业化

    这个问题演示如何使用 C 20 概念进行选择超载 for a function模板 我正在尝试做类似的事情 选择专业化 for a class模板 我从一个类模板开始Angle
  • 使用 pandas 从 zip 中读取特定的 csv 文件

    这是我感兴趣的一个数据 http fenixservices fao org faostat static bulkdownloads Production Crops E All Data zip 它由 3 个文件组成 我想用 panda