使用 numpy.genfromtxt 读取包含逗号的字符串的 csv 文件

2023-11-22

我正在尝试读取 csv 文件numpy.genfromtxt但有些字段是包含逗号的字符串。字符串用引号括起来,但 numpy 无法将引号识别为定义单个字符串。例如,对于“t.csv”中的数据:

2012, "Louisville KY", 3.5
2011, "Lexington, KY", 4.0

the code

np.genfromtxt('t.csv', delimiter=',')

产生错误:

ValueError:检测到一些错误! 第 2 行(有 4 列而不是 3 列)

我正在寻找的数据结构是:

array([['2012', 'Louisville KY', '3.5'],
       ['2011', 'Lexington, KY', '4.0']], 
      dtype='|S13')

查看文档,我没有看到任何处理此问题的选项。有没有办法用 numpy 来实现它,或者我只需要使用csv模块然后将其转换为 numpy 数组?


您可以使用pandas(成为在科学Python中处理数据框(异构数据)的默认库)。它是read_csv可以处理这个。来自文档:

引号字符:字符串

The character to used to denote the start and end of a quoted item. Quoted items 
can include the delimiter and it will be ignored.

默认值为"。一个例子:

In [1]: import pandas as pd

In [2]: from StringIO import StringIO

In [3]: s="""year, city, value
   ...: 2012, "Louisville KY", 3.5
   ...: 2011, "Lexington, KY", 4.0"""

In [4]: pd.read_csv(StringIO(s), quotechar='"', skipinitialspace=True)
Out[4]:
   year           city  value
0  2012  Louisville KY    3.5
1  2011  Lexington, KY    4.0

这里的技巧是你还必须使用skipinitialspace=True处理逗号分隔符后面的空格。

除了强大的 csv 阅读器之外,我还强烈建议将 pandas 与您拥有的异构数据一起使用(您给出的 numpy 中的示例输出都是字符串,尽管您可以使用结构化数组)。

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

使用 numpy.genfromtxt 读取包含逗号的字符串的 csv 文件 的相关文章

随机推荐