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 读取所有列,但很少作为字符串 的相关文章

随机推荐

  • 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