Pandas read_csv dtype 读取所有列,但很少作为字符串

2024-01-19

我正在使用 Pandas 读取一堆 CSV。将选项 json 传递给 dtype 参数来告诉 pandas 将哪些列读取为字符串而不是默认值:

dtype_dic= { 'service_id':str, 'end_date':str, ... }
feedArray = pd.read_csv(feedfile , dtype = dtype_dic)

在我的场景中,all除少数特定列外,所有列都将作为字符串读取。因此,不要将几列定义为 strdtype_dic,我想将我选择的几个设置为 int 或 float。有没有办法做到这一点?

这是一个循环遍历具有不同列的各种 CSV,因此在将整个 csv 读取为字符串后进行直接列转换(dtype=str),这并不容易,因为我不会立即知道 csv 有哪些列。 (我宁愿花精力来定义 dtype json 中的所有列!)

编辑:但是,如果有一种方法可以处理要转换为数字的列名称列表,而不会在该 csv 中不存在该列的情况下出错,那么,如果没有其他方法,这将是一个有效的解决方案这是在 csv 阅读阶段本身。

注意:这听起来就像之前问过的问题一样 https://stackoverflow.com/questions/37515896/pandas-read-csv-dtype-specify-all-columns-but-one但那里的答案走了一条非常不同的道路(与布尔相关),这不适用于这个问题。请不要标记为重复!


对于 Pandas 1.5.0+,有一个简单的方法可以做到这一点。如果您使用defaultdict而不是正常的dict为了dtype参数中,字典中未明确列出的任何列都将使用默认值作为其类型。例如。

from collections import defaultdict
types = defaultdict(str, A="int", B="float")
df = pd.read_csv("/path/to/file.csv", dtype=types, keep_default_na=False)

(我还没有测试过这个,但我认为你仍然需要keep_default_na=False)


对于旧版本的 Pandas:

您可以将整个 csv 作为字符串读取,然后将所需的列转换为其他类型,如下所示:

df = pd.read_csv('/path/to/file.csv', dtype=str, keep_default_na=False)
# example df; yours will be from pd.read_csv() above
df = pd.DataFrame({'A': ['1', '3', '5'], 'B': ['2', '4', '6'], 'C': ['x', 'y', 'z']})
types_dict = {'A': int, 'B': float}
for col, col_type in types_dict.items():
    df[col] = df[col].astype(col_type)

keep_default_na=False如果某些列是空字符串或类似的内容,则这是必要的NApandas 转换为NA类型的float默认情况下,这将使您最终得到混合数据类型str/float

另一种方法是,如果您确实想在读入文件时为所有列指定正确的类型,并且之后不更改它们:仅读入列名(无行),然后使用它们来填充哪些列应该是字符串

col_names = pd.read_csv('file.csv', nrows=0).columns
types_dict = {'A': int, 'B': float}
types_dict.update({col: str for col in col_names if col not in types_dict})
pd.read_csv('file.csv', dtype=types_dict)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas read_csv dtype 读取所有列,但很少作为字符串 的相关文章

  • pandas DataFrame.join 的运行时间是多少(大“O”顺序)?

    这个问题更具概念性 理论性 与非常大的数据集的运行时间有关 所以我很抱歉没有一个最小的例子来展示 我有一堆来自两个不同传感器的数据帧 我需要最终将它们连接成两个very来自两个不同传感器的大数据帧 df snsr1 and df snsr2
  • NLTK 2.0分类器批量分类器方法

    当我运行此代码时 它会抛出一个错误 我认为这是由于 NLTK 3 0 中不存在batch classify 方法 我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题 def accuracy classifier gold resu
  • VSCode Settings.json 丢失

    我正在遵循教程 并尝试将 vscode 指向我为 Scrapy 设置的虚拟工作区 但是当我在 VSCode 中打开设置时 工作区设置 选项卡不在 用户设置 选项卡旁边 我还尝试通过以下方式手动转到文件 APPDATA Code User s
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • 嵌套列表的重叠会产生不必要的间隙

    我有一个包含三个列表的嵌套 这些列表由 for 循环填充 并且填充由 if 条件控制 第一次迭代后 它可能类似于以下示例 a 1 2 0 0 0 0 0 0 4 5 0 0 0 0 0 0 6 7 根据条件 它们不重叠 在第二次迭代之后 新
  • 如何从Python中的函数返回多个值? [复制]

    这个问题在这里已经有答案了 如何从Python中的函数返回多个变量 您可以用逗号分隔要返回的值 def get name you code return first name last name 逗号表示它是一个元组 因此您可以用括号将值括
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • PyQt 使用 ctrl+Enter 触发按钮

    我正在尝试在我的应用程序中触发 确定 按钮 我当前尝试的代码是这样的 self okPushButton setShortcut ctrl Enter 然而 它不起作用 这是有道理的 我尝试查找一些按键序列here http ftp ics
  • GUI(输入和输出矩阵)?

    我需要创建一个 GUI 将数据输入到矩阵或表格中并读取此表单数据 完美的解决方案是限制输入表单仅允许float 例如 A 1 02 0 25 0 30 0 515 0 41 1 13 0 15 1 555 0 25 0 14 1 21 2
  • Python 内置的 super() 是否违反了 DRY?

    显然这是有原因的 但我没有足够的经验来认识到这一点 这是Python中给出的例子docs http docs python org 2 library functions html super class C B def method se
  • 如何使用 Selenium 和 ChromeDriver 解决 TypeError: 'module' object is not callable 错误 [重复]

    这个问题在这里已经有答案了 代码试验 from selenium import webdriver from selenium webdriver chrome options import Options as Chromeoptions
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • 如何将 ascii 值列表转换为 python 中的字符串?

    我在 Python 程序中有一个列表 其中包含一系列数字 这些数字本身就是 ASCII 值 如何将其转换为可以在屏幕上回显的 常规 字符串 您可能正在寻找 chr gt gt gt L 104 101 108 108 111 44 32 1
  • pandas - 包含时间序列数据的堆积条形图

    我正在尝试使用时间序列数据在 pandas 中创建堆积条形图 DATE TYPE VOL 0 2010 01 01 Heavy 932 612903 1 2010 01 01 Light 370 612903 2 2010 01 01 Me
  • Python GTK+ 画布

    我目前正在通过 PyGobject 学习 GTK 需要画布之类的东西 我已经搜索了文档 发现两个小部件似乎可以完成这项工作 GtkDrawingArea 和 GtkLayout 我需要一些基本函数 如 fillrect 或 drawline
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • 如何使用 Boto3 启动具有 IAM 角色的 EC2 实例?

    我无法弄清楚如何使用指定的 IAM 角色在 Boto3 中启动 EC2 实例 以下是迄今为止我如何成功创建实例的一些示例代码 import boto3 ec2 boto3 resource ec2 region name us west 2
  • 根据 Pandas 中的列表选择数据框行的子集

    我有一个数据框df1并列出x In 22 import pandas as pd In 23 df1 pd DataFrame C range 5 B range 10 20 2 A list abcde In 24 df1 Out 24
  • pandas.read_csv 将列名移动一倍

    我正在使用位于的 ALL zip 文件here http www fec gov disclosurep PDownload do 我的目标是用它创建一个 pandas DataFrame 但是 如果我跑 data pd read csv
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size

随机推荐

  • Python 3 unittest模拟用户输入

    如何在单元测试调用的函数中间模拟用户输入 使用 Python 3 的单元测试 例如我有一个函数foo 我正在测试谁的输出 在里面foo 函数 它要求用户输入 x input msg 输出基于输入 print input 0 format x
  • Jenkins 设置向导空白页

    我刚刚通过 npm 在我的 RHEL 6 0 服务器上安装了 Jenkins npm ivh jenkins 2 7 2 1 1 noarch rpm 我还将端口配置为 9917 以避免与 Tomcat 服务器发生冲突 从而允许我访问 Je
  • 在一个 Windows 命令提示符下按顺序运行多个程序?

    我需要一个接一个地运行多个程序 并且每个程序都在控制台窗口中运行 我希望控制台窗口可见 但会为每个程序创建一个新窗口 这很烦人 因为每个窗口都在另一个窗口关闭的新位置打开 并且在 Eclipse 中工作时会窃取焦点 这是我使用的初始代码 d
  • 使用 LINQ 从 List 中删除元素

    假设我有 LINQ 查询 例如 var authors from x in authorsList where x firstname Bob select x 鉴于authorsList属于类型List
  • 结合 static_cast 和 std::any_cast

    有安全的吗std any cast and static cast组合 我正在尝试执行以下操作 include
  • java中集合中元素的顺序

    如果我从同一组中创建 2 个列表 我可以确保在这两个列表中获得相同的顺序吗 我不关心顺序 只要两个列表具有相同的顺序 并且我在创建两个列表之间不对集合执行任何操作 List l new ArrayList set List l1 new A
  • Winforms/WPF 应用程序可以充当 HTTP 服务器吗?

    我有一个用 Winforms 编写的桌面 现在我请求人们想要从其他机器访问数据 首先 我考虑了常规的客户端 服务器应用程序 但现在我认为最好的是该应用程序可以充当 HTTP 服务器并将 HTML 发送到连接的浏览器 有谁知道是否有一个库可用
  • 如何使用pandas to_csv float_format?

    我正在从一个精度为 8 的数据文件中读取数据 然后在插入一些值后 我将它们保存起来 就像 float format 选项不起作用的地方一样 df to csv data dat sep index False header False fl
  • 为什么 stringstreams rdbuf() 和 str() 给出不同的输出?

    我有这个代码 int main std string st std stringstream ss ss lt lt hej hej med dig lt
  • 如何使用 GStreamer 标记或添加元数据到视频文件?

    我想使用 GStreamer 将元数据添加到 MP4 视频文件 录制文件时如何进行 当文件已经录制时怎么办 是否可以使用 GStreamer 检查这些修改 例如 使用 FFmpeg 我可以使用以下命令行向视频添加标题 ffmpeg i in
  • 使用过滤的资源调试 Maven junit 测试?

    我们在 JUnit 测试中使用过滤后的 testResources 这些测试资源通常由 Maven Surefire 插件执行 即pom包含一段
  • Swing:创建一个居中显示其组件的 JScrollPane?

    如果您创建的 JScrollPane 的视口大于 JScrollPane 的组件 则会在左上角显示该组件 有没有办法改变这种行为 使其显示组件居中 下面的示例程序 澄清 我有一个具有 宽度 高度 cw ch 的组件 我有一个 JScroll
  • 如果未提交表单,则阻止 PHP 代码执行 [重复]

    这个问题在这里已经有答案了 我有一个 php 文件说 检查 php 在我的网站中 它在提交表单时执行 说我的网站是 myweb com php 文件位于目录 PHP 中 我想阻止直接 url 访问 check php 文件 即如果有人输入
  • Coldfusion 中的递归函数

    我正在尝试在 Coldfusion 中创建递归函数 但遇到了一些问题 这是我的逻辑
  • sencha extjs 5.0 应用程序无法在生产版本中运行

    我刚刚使用 ExtJS 5 0 构建了一个新应用程序 看起来非常棒 该应用程序在开发模式下工作正常 但一旦我使用命令行工具构建应用程序并部署它 它就会停止工作 当我在项目目录中时使用的构建命令 sencha app build produc
  • PostgreSQL - 根据条件为每行分配值

    我有下表 date label time 2014 04 06 A 12 05 56 2014 04 06 A 23 02 32 2014 04 06 B 8 39 25 2014 04 06 B 12 36 37 2014 04 06 C
  • jQuery mobile $(document).ready 等效项

    在ajax导航页面中 用于执行初始化javascript的经典 文档就绪 表单根本不会触发 在 ajax 加载的页面中执行某些代码的正确方法是什么 我的意思是 不是我的 ajax 它是 jquery 移动页面导航系统将我带到该页面 好吧 我
  • 打印不带前导零的浮点值

    尝试使用格式说明符打印一个小于 1 且没有前导零的浮点数 我想出了一些技巧 但我认为有一种方法可以删除格式说明符中的前导零 我在文档中找不到它 Issue gt gt gt k 1337 gt gt gt print 4f k 0 1337
  • 将 Word 文档保存为 PDF,并在文件路径中使用变量?

    我正在制作一个单词宏 将单词文档另存为 PDF 名称中带有数组变量 目前的代码如下所示 Private Sub CommandButton2 Click SavePDF Dim i As Integer i ActiveDocument M
  • Pandas read_csv dtype 读取所有列,但很少作为字符串

    我正在使用 Pandas 读取一堆 CSV 将选项 json 传递给 dtype 参数来告诉 pandas 将哪些列读取为字符串而不是默认值 dtype dic service id str end date str feedArray p