保存到 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 对象 的相关文章

随机推荐

  • 如何从 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