对于 read_csv 和数据值 NA 来说,这是正确的行为吗?

2023-12-28

(我已经开了一个issue https://github.com/pydata/pandas/issues/10647在 GitHub。)

以下行为对我来说似乎不正确。似乎如果默认为read_csv is na_values=False那么包括“NA”在内的任何值都不应被解释为 NaN,但情况似乎并非如此。

这种行为被注意到在这个帖子 https://stackoverflow.com/questions/31527138/slicing-a-pandas-dataframe-using-two-strings(请参阅@JianxunLi 的答案的评论),其中“NA”实际上意味着“北美”。实际上,我无法找到一种方法来读取它而不将其更改为 NaN,并且肯定应该有某种方法可以做到这一点。

这是 csv 示例。

%more foo.txt
x,y
"NA",NA
"foo",foo

我在引号和外部都添加了“NA”,看看这是否重要,但正如您在下面看到的那样,它似乎并不重要。

pd.read_csv('foo.txt')
Out[56]: 
     x    y
0  NaN  NaN
1  foo  foo

pd.read_csv('foo.txt',na_values=False)
Out[57]: 
     x    y
0  NaN  NaN
1  foo  foo

pd.read_csv('foo.txt',na_values='foo')
Out[58]: 
    x   y
0 NaN NaN
1 NaN NaN

看来“NaN”的数据值与“NA”的处理方式相同。

编辑添加:我认为我根据@Marius的答案更好地理解了这一点,尽管它对我来说似乎并不正确(默认行为,即不是Marius的答案,这似乎是对正在发生的事情的正确解释)。

na_values=False    =>   NA and NaN are treated as NaN
na_values='foo'    =>   NA, NaN, and foo are treated as NaN

我想我可以理解这是数字列中的默认行为,但似乎这不应该是字符串列的默认行为。如果没有看到马吕斯的答案,我也很难从文档中弄清楚这一点。

编辑添加(2):

另外,为了进行比较,我将其读入 Stata 和 Excel,在这两种情况下,它们都将“NA”视为纯文本,而不是 NaN/缺失。是否有任何其他包或库具有与 pandas 相同的默认行为?


你需要keep_default_na=False,默认情况下您包含的任何字符串na_values只是添加到标准的 NA 字符串集中,例如NA, NaN:

pd.read_csv('foo.txt', keep_default_na=False)
Out[5]: 
     x    y
0   NA   NA
1  foo  foo
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对于 read_csv 和数据值 NA 来说,这是正确的行为吗? 的相关文章

随机推荐

  • Hive 表的 ORC 拆分生成问题

    我在 Hadoop 3 3 4 上使用 Hive 版本 3 1 3 和 Tez 0 9 2 当我创建一个包含拆分的 ORC 表并尝试查询它时 我得到一个ORC split generation failed例外 如果我连接表格 https
  • cocos2d可以调节音量吗?

    我使用以下方法 在cocos2d中表达声音效果 SimpleAudioEngine sharedEngine playBackgroundMusic BackGround m4a 但背景音乐的音量太小 那么 有没有办法调节音量呢 Simpl
  • 无法使用 Eclipse 和 Maven 让 Struts2 Hello World 工作

    该网站不允许用户向他们的教程提出技术问题 我认为该教程已损坏 http www mkyong com misc how to use mkyong tutorial http www mkyong com misc how to use m
  • std::function 无法区分重载函数

    我试图理解为什么std function无法区分重载函数 include
  • 无法加载私钥。 (PEM例程:PEM_read_bio:无起始行:pem_lib.c:648:预期:任何私钥)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个 key 文件 它是 PEM 格式的私钥文件 我没有制作这个文件 但我从某个地方得到了这个 我想使用 openssl 工具查看其
  • 如何对齐Gridview中心

    我想将 GridView 居中对齐 我还是这样 正如您在上图中看到的 我在左侧获取图像 但我想在中心显示图像 如下所示 另一件事是获得文本背景的额外宽度我如何仅在图像中显示文本背景 现在 gridview 位于中心 但仍然遇到问题 请参阅文
  • 在 Titanium 应用程序中找不到库 stlport_shared

    我想创建一个 Titanium 模块 因此我有一个扩展 KrollModule 及其方法的类 Kroll method public void example Activity activity this getActivity Strin
  • git 子模块的公共子模块

    我有一个申请main由多个子模块组成A B and utility functions 这两个子模块A and B本身包含子模块utility functions main A utility functions B utility fun
  • Tesseract-OCR 3.02 与 libc++

    Xcode 4 6 iOS SDK 6 1 tesseract ocr 3 02 由于最新的 OpenCV 版本是使用构建的libc 并且 tesseract ocr 是使用构建的libstdc 库 它们不能在一个 xcode 项目中一起使
  • 禁止用户订阅 Firebase 主题

    如何消除应用程序用户拨打电话的机会FirebaseMessaging subscribeToTopic String 为了仅在服务器端处理主题管理 Firebase 云消息传递主题是公开的 无法阻止特定用户订阅它们
  • ERRO[0043] 拨打 gRPC 失败:无法升级到 h2c,收到 501

    当我尝试使用以下命令构建 Dockerfile 时docker build t myimage1 今天我收到这个错误 ERRO 0043 failed to dial gRPC unable to upgrade to h2c receiv
  • 用lark语法识别多行部分

    我正在尝试编写一个简单的语法来解析具有多行部分的文本 我不知道该怎么做 这是我到目前为止写的语法 如果有任何帮助 我们将不胜感激 ps 我意识到 lark 对于这个问题来说太过分了 但这只是我试图解析的一个非常简化的版本 from unit
  • 调试多线程应用程序[重复]

    这个问题在这里已经有答案了 我有一个用 C 和 MFC 编写的应用程序 它在 Windows 上运行多线程 有时我确实会收到一些抱怨 例如由于这些线程而导致的死锁或未处理的异常 通常我使用 Visual Studio 如果问题可重现 或使用
  • 恢复 git merge 冲突标志

    我正在尝试找出一种与团队其他成员共享合并冲突的方法 我们有一些非常大的分支 合并它们会产生很多冲突 我尝试了几种不同的方法 我当前的尝试包括将处于冲突状态的文件推送到远程存储库 将合并标记留在文件中 然后运行一个烦人的长别名来 grep 通
  • SciPy Optimizer 给出不满足约束的结果

    我正在使用 scipy optimize minimize 来解决问题 但包给出的结果违反了约束 这种情况非常简单 只给出一个目标函数和一个约束 这是代码 import math import numpy as np import scip
  • 将所有 QLineEdits 设置为只读

    我试图将我的所有 QLineEdits 大约有 150 个 设置为只读 有没有办法在不单独检查和设置每个 QLineEdits 的情况下执行此操作 我希望我能做类似的事情QLineEdit setReadOnly true 在我的构造函数中
  • 用于查找无效电子邮件地址的 SQL 脚本

    数据导入是从 Access 数据库完成的 并且没有对电子邮件地址字段进行验证 有没有人有一个可以返回无效电子邮件地址列表 缺少 等 的sql脚本 SELECT FROM people WHERE email NOT LIKE 任何更复杂的事
  • Logstash 可以同时处理多个输出吗?

    我对 Logstash 和弹性搜索很陌生 我正在尝试将日志文件存储在elasticsearch 和平面文件中 我知道logstash 支持这两种输出 但它们是同时处理的吗 还是通过工作定期完成 是的 您可以通过使用托运人配置上的 add t
  • 为什么 Java 和 C# 中嵌套类的行为不同?

    我不明白为什么Java中出现以下代码错误 public abstract class TestClass private final int data protected TestClass int data this data data
  • 对于 read_csv 和数据值 NA 来说,这是正确的行为吗?

    我已经开了一个issue https github com pydata pandas issues 10647在 GitHub 以下行为对我来说似乎不正确 似乎如果默认为read csv is na values False那么包括 NA