np.genfromtext格式从.csv文件第2列导入错误的值时,引号内充满了逗号

2021-10-17 14:21:42 发布

您现在位置:Python中文网/ 问答频道 /正文

编辑:问题解决,为子孙后代开放。

numpy.genfrontext has trouble delimiting strings that have commas。为了解决这个问题,只需使用熊猫.read\u csv并使用quotechar = '"'允许导入程序正确处理包含逗号的字符串。

奇怪的问题。你知道吗

我正在从.csv文件导入蛋白质数据列表,对于99.9%的ID来说,这些文件工作得非常完美。但是,50万个ID中有一个ID始终导入错误的数据。你知道吗

这是我用来提取数据的代码。它使用glob来拉入具有相似名称的csv文件。标题存储为列表,然后用作列,以防csv文件的标题混合在一起(该死的,蛋白质组发现者):

indexes = ["Accession", "# Peptides", "MW [kDa]", "Score"]
headers = pd.read_csv(str(WorkingDirectory) + "/" + str(name) + "-R1.csv", nrows=1).columns.tolist()
total = [np.genfromtxt(x, delimiter = ',', skip_header = 1, usecols = [int(headers.index(indexes[0])),int(headers.index(indexes[1])),int(headers.index(indexes[2])),int(headers.index(indexes[3]))], filling_values = 0.01, dtype = ('|U16','float64','float64','float64')).tolist() for x in glob.glob(str(WorkingDirectory) + "/" + str(name) + "*.csv")] 

然后ID存储在一个列表中,每个列表条目都与原始文件匹配。[文件1,文件2,文件3]

这就奇怪了。在每个.csv文件中的5.5K个条目中,有一个ID(代码重新启动时)始终报告错误的数字。你知道吗

请参阅附件我的程序输出,以及数据来源的excel表。A、C、E和H列是我的输入(分别为登录、得分、肽和分子量[kDa],橙色)enter image description here

看起来ID的name和score正在导入正确的值,但是接下来的两列分别被1关闭(它导入的是F,而不是E),然后试图从一个不存在的未指定列中获取一个值(因此,由于filling values,值为0.01)

我检查过的东西:

1)是的,所有三个文件的excel标题都相同。你知道吗

2)是的,我有适当的代码来处理任何零生成的下游NaN废话。因此,如果它为分数导入一个0,我稍后手动更改它。你知道吗

3)是的,如果缺少值,genfromtextfilling_values = 0.01将填充该间隙,但是在这种情况下,不需要填充任何间隙,因为单元格中有相应的值。

4)我检查的每个其他ID都正确导入了数据。你知道吗

5)Q60749不是一根不寻常的弦。其他包括:Q9CQM5,D3Z5X0等。没有标签,没有引号,没有逗号。你知道吗

6){From comments}所有文件只包含此蛋白质ID的一个实例

为什么这一个ID会在其他成千上万的成功点击中引发问题?我最初发现这个命中是因为一些下游分析说我有一个NaN值;Q60749就是那个值,它只是没有导入正确的数据。你知道吗