保存到 parquet 文件时如何使用新的 Int64 pandas 对象

2024-04-21

我正在使用 Python (Pandas) 将数据从 CSV 转换为 Parquet,以便稍后将其加载到 Google BigQuery 中。我有一些包含缺失值的整数列,从 Pandas 0.24.0 开始,我可以将它们存储为 Int64 dtype。

有没有办法在镶木地板文件中也使用 Int64 dtype?我找不到针对缺失值的整数的干净解决方案(因此它们在 BigQuery 中保持为 INTEGER)。

我尝试将其直接导入 BigQuery,并得到与使用 Pandas 转换为 parquet 时相同的错误(如下所示。)

导入包含缺失值的 int 列的 CSV:

import pandas as pd
df = pd.read_csv("docs/test_file.csv")
print(df["id"].info())

id 8 非空 float64

该行作为 float64 导入。我将类型更改为 Int64:

df["id"] = df["id"].astype('Int64')
print(df["id"].info())

id 8 非空 Int64

然后我尝试保存到镶木地板:

df.to_parquet("output/test.parquet")

错误:

pyarrow.lib.ArrowTypeError: ('未传递 numpy.dtype 对象', 'Int64 类型的列 id 转换失败')


目前有一个未解决的问题来支持来自 google-cloud-bigquery 的新 Int64 列:https://github.com/googleapis/google-cloud-python/issues/7702 https://github.com/googleapis/google-cloud-python/issues/7702.

同时,我建议使用对象数据类型。在 google-cloud-bigquery 版本 1.13.0 中,您可以指定所需的 BigQuery 架构,并且该库将在 parquet 文件中使用所需的类型。

    # Schema with all scalar types.
    table_schema = (
        bigquery.SchemaField("int_col", "INTEGER"),
    )

    num_rows = 100
    nulls = [None] * num_rows
    dataframe = pandas.DataFrame(
        {
            "int_col": nulls,
        }
    )

    table_id = "{}.{}.load_table_from_dataframe_w_nulls".format(
        Config.CLIENT.project, dataset_id
    )

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

保存到 parquet 文件时如何使用新的 Int64 pandas 对象 的相关文章

  • 如何在python中读取多个文件中的文本

    我的文件夹中有许多文本文件 大约有 3000 个文件 每个文件中第 193 行是唯一包含重要信息的行 我如何使用 python 将所有这些文件读入 1 个文本文件 os 模块中有一个名为 list dir 的函数 该函数返回给定目录中所有文
  • Python、Tkinter、更改标签颜色

    有没有一种简单的方法来更改按钮中文本的颜色 I use button text input text here 更改按下后按钮文本的内容 是否存在类似的颜色变化 button color red Use the foreground设置按钮
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • pandas 替换多个值

    以下是示例数据框 gt gt gt df pd DataFrame a 1 1 1 2 2 b 11 22 33 44 55 gt gt gt df a b 0 1 11 1 1 22 2 1 33 3 2 44 4 3 55 现在我想根据
  • 如何使用包含代码的“asyncio.sleep()”进行单元测试?

    我在编写 asyncio sleep 包含的单元测试时遇到问题 我要等待实际的睡眠时间吗 I used freezegun到嘲笑时间 当我尝试使用普通可调用对象运行测试时 这个库非常有用 但我找不到运行包含 asyncio sleep 的测
  • 如何使用装饰器禁用某些功能的中间件?

    我想模仿的行为csrf exempt see here https docs djangoproject com en 1 11 ref csrf django views decorators csrf csrf exempt and h
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 从 Python 中的类元信息对 __init__ 函数进行类型提示

    我想做的是复制什么SQLAlchemy确实 以其DeclarativeMeta班级 有了这段代码 from sqlalchemy import Column Integer String from sqlalchemy ext declar
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • 使用基于正则表达式的部分匹配来选择 Pandas 数据帧的子数据帧

    我有一个 Pandas 数据框 它有两列 一列 进程参数 列 包含字符串 另一列 值 列 包含相应的浮点值 我需要过滤出部分匹配列 过程参数 中的一组键的子数据帧 并提取与这些键匹配的数据帧的两列 df pd DataFrame Proce

随机推荐

  • 如何从 Node.js 调用 C++ 代码?

    我目前正在开发一个在服务器上运行的模拟器 并应在浏览器中显示数据 对于服务文件 通信和类似的事情 我想使用 Node js 但是 我不确定它在计算部门是否会像我希望的那样执行 所以我想用 C 开发模拟部分 模拟被划分为单独的 世界 它们都以
  • 使用 node-sass 安装 angular-cli 时出错

    我的系统配置 Debian 4 4 nvm 0 33 8 节点 v8 9 4 npm 5 6 0 我想安装 Angular clinpm install g angular cli 但我收到一条错误消息 root contracts hom
  • NugGet Semver - 允许哪些预发行角色?

    我正在尝试对我的 NuGet 包 NET Core 2 之一使用语义版本控制 版本如下 1 0 0 my fancy branch 123 正如您所猜测的 我尝试将分支名称和当前 BuildId 设置为预发布标签 不幸的是 dotnet b
  • MediaCodec.createInputSurface() 在 Android 模拟器中抛出 IllegalStateException(错误 -38)

    I have MediaMuxer MediaMuxer mMediaMuxer new MediaMuxer new File Environment getExternalStorageDirectory video mp4 getPa
  • 在 Shiny 中格式化响应式 data.frames

    我有一个工作闪亮的应用程序 但我正在更改它 以便输入数据是反应性的 当底层数据更新时它会更新 当它刚刚读入数据时 它工作得很好 但现在数据是反应性的 我在其中一个文件上遇到了问题 另外两个文件按预期工作 该文件是从数据库导出的 csv 我想
  • 数据库级别的国际化

    谁能向我指出一些解决数据库级别任务国际化的模式 最简单的方法是为每个文本列的每种语言添加一个文本列 但这在某种程度上有点难闻 我真的希望能够动态添加支持的语言 我要提出的解决方案是保存在模型中的一种主要语言和一个查询翻译并将翻译保存到的字典
  • 为什么unique_ptr::~unique_ptr需要T的定义?

    如果我有一堂 酒吧 课 bar h class Bar public Bar 我转发声明与另一个类 Foo 中的 std unique ptr 一起使用 foo h include
  • Visual Studio 2010 - 如何优化

    我正在使用 2010 版的 Visual Studio 但遇到了许多延迟问题 我的计算机具有良好的 RAM 和处理器配置 特别是在保存文件时 目前 我正在进行一个中型项目 只有一个打开文件 ASP NET 页面 使用第三方 Telerik
  • ActionBarSherlock - 无法解析类型 android.support.v4.app.Fragment。它是从所需的 .class 文件间接引用的

    我使用 ActionBarSherlock 作为一个项目中的库项目 该项目本身就是一个库 一切都工作正常 直到我将项目移至新计算机并更新了 SDK 工具 我有这个错误我不明白 当我创建一个扩展 SherlockFragment 的类时 如下
  • xCode Instruments 检测到的这些内存泄漏对象是什么?

    我有一个 iPhone 应用程序 似乎存在内存泄漏问题 这是一款益智游戏 在玩了几个谜题后 应用程序在设备上崩溃了 我现在尝试使用 xcode Instruments 来检测发生了什么 第一次使用仪器 我注意到 泄漏 图中有一个泄漏栏 就在
  • JTextField 中的下拉列表

    我不知道当我在文本字段中输入一些字母时 应该从我的数据库中选取相关项目并应显示为下拉列表 例如 我在文本字段中输入了 J 在我的数据库中具有诸如 Juby Jaz Jasmine Joggy 之类的名称 这些名称应显示为列表 这样我就可以从
  • MSChart 中系列和数据点的所有可用自定义属性的最终列表

    我正在使用 NET 3 5 MSChart 控件 有时我发现我需要向系列或数据点添加自定义属性 例如 Series series new Series series PieDrawingStyle SoftEdge DataPoint po
  • Graphql 没有为接口/联合定义解析器 - java

    我在使用这种方法添加解析器时遇到问题graphql RestController RequestMapping api dictionary RequiredArgsConstructor onConstructor Autowired p
  • C# 中是否有与 HashSet 等效的 AddRange

    通过列表 您可以执行以下操作 list AddRange otherCollection a 中没有添加范围方法HashSet 添加另一个的最佳方法是什么ICollection to a HashSet For HashSet
  • MySQL中如何获取两个值中的最大值?

    我尝试过但失败了 mysql gt select max 1 0 ERROR 1064 42000 You have an error in your SQL syntax check the manual that corresponds
  • twitter bootstrap 下拉菜单的对齐

    我设计了一个带有下拉菜单的引导导航栏 http jsfiddle net yabasha fex8N 3 http jsfiddle net yabasha fex8N 3
  • Android活动内存消耗

    我有一个 Android 应用程序 有 4 个活动 第一个是基本的启动屏幕 第二个是登录 第三个是主屏幕 第四个是用于绘图的额外屏幕 在真实设备上运行该应用程序 2014 年的 Samsung Galazy 选项卡或 Android 4 4
  • Ncurses 和 Qt 互操作性

    拥有基于 Qt 和 ncurses 的应用程序 在等待用户输入时每秒刷新屏幕的最佳方法是什么 例如显示时钟并获取用户输入 我需要 CPU 使用率和应用程序响应能力之间的最佳折衷 更具体地说 如何获取用户输入并仍然使用QTimer以及信号槽机
  • Mojave/macOS 10.14.0:[AVPlayerItem 持续时间] 始终不确定

    我正在尝试使用以下代码读取本地存储的音频文件的持续时间 import
  • 保存到 parquet 文件时如何使用新的 Int64 pandas 对象

    我正在使用 Python Pandas 将数据从 CSV 转换为 Parquet 以便稍后将其加载到 Google BigQuery 中 我有一些包含缺失值的整数列 从 Pandas 0 24 0 开始 我可以将它们存储为 Int64 dt