我已经以Excel/CSV格式从http://www.gapminder.org/data下载了数据集“第一次结婚时的年龄(女性)”。数据集的第一行包含标题,第一列包含国家名称。使用numpy.genfromtxt()读取CSV文件 - 分隔符作为行名称的一部分
要阅读这些数据,我使用下面的代码。
import numpy as np
source=open("D:\FirstMarriage.csv")
data = np.genfromtxt(source, dtype=None, delimiter=",", skip_header=1)
print data
执行这个代码(在Spyder的IDE)后,我收到此错误:
ValueError: Some errors were detected !
Line #37 (got 118 columns instead of 117)
Line #38 (got 118 columns instead of 117)
Line #72 (got 118 columns instead of 117)
Line #87 (got 118 columns instead of 117)
Line #97 (got 118 columns instead of 117)
Line #98 (got 118 columns instead of 117)
Line #184 (got 118 columns instead of 117)
当我打开CSV文件,用记事本+ +和我期待的指示线我发现,这些行包含名字的名称中有昏迷的国家。而且,这些名字被引号为唯一可能表明这是全名的名称。但是,它并没有帮助我。请参考下面(我只显示第一列)的例子:
China
Colombia
"Congo, Dem. Rep."
"Congo, Rep."
Costa Rica
有没有简单的方法来清理这些数据,并作为一个单一的字符串中引号把名字?
我在Windows 10上使用Python 2.7(Anaconda)。
谢谢!
最简单的方法是将真正的分隔符更改为其他内容,比如';'。事先用编辑器或过滤器功能做到这一点。 'csv.reader'可以处理引用的内容,但'genfromtxt'没有任何规定。 – hpaulj
@hpaulj我已经改变了Windows设置来将分隔符写为';'。现在它运行良好,应该为我的未来留下问题,因为这个符号通常很少使用。但是,如果我使用预先描述的设置(例如公司)在不同的机器上工作,那么我需要找到更强大的解决方案。 – Roberto