我有一个包含 A、B、C、D 列和 N 行的 CSV 文件。
问题是这些列中的数据长度不同,即有些是 4.5,有些是 4.52。
我的问题分为两部分:
我如何从 csv 文件访问这些列。
我使用此代码来打印 csv 文件的内容并将它们读入数组
import csv
with open('file.csv','rb') as f:
reader = csv.reader(f)
for row in reader:
print row
打印 CSV 文件中的行并替换
print row
with
z = row
z.append(z)
将数据保存到数组中。
但 z 是一个一维数组。并且数据是字符串类型。当我尝试执行 np.median(z) 类型的操作时,它给了我一个错误。另外,我不能做
z.append(float(z))
这给了我一个类型错误。
而且,当我们从 csv 文件导入这些值时,是否可以截断这些值并将它们设置为一定的精度?!例如,如果文件具有 4.3、4.56、4.299 等值,我想将最终导入的内容限制为仅一位小数。
这个 SE 问题最接近回答我的第二个问题 -Python - CSV:具有不同长度行的大文件- 但我不明白。如果你们中有人能在这方面帮助我,我将不胜感激。
编辑1:
@ Richie:这是一个示例数据集 -http://goo.gl/io8Az。它链接到谷歌文档。
并注册您的评论,这是我在 csv 文件上运行您的代码的结果 -
ValueError: could not convert string to float: plate
@ Pieters:z = row,z.append(z) 创建了这个 -
['3836', '55302', '402', '22.945717', '22.771544', '23.081865', '22.428421', '21.78294', '164.40663689', '-1.25641627', '1 .780485', '1237674648848106129', [...]]。
我应该提到的是,我刚刚开始使用 python,并且我正在学习需要知道的东西!我用在网上找到的一些代码进行即兴创作。
编辑2:
我听说过熊猫。我想我应该开始使用它。
@ Khalid - 我已经运行了你的代码,并且能够检索我想要的列。
我可以访问它,而不是打印整行吗?!作为静态数组?!
编辑3:
@ richie:我第一次运行你的代码时,出现了这个 -
回溯(最近一次调用最后一次):
文件“”,第 4 行,位于
ValueError:无法将字符串转换为浮点:板
好吧,我意识到包含列名的第一行是原因,所以我删除了第一行,将其另存为新文件并在该文件上运行代码,它工作得很好。
但是,如果我删除包含列标识符的第一行,我将无法使用下面 khalid 提到的方法。与此同时,我正在观察熊猫。
谢谢你们所做的一切:)
编辑4:
学习到教训了。熊猫太棒了。任务完成 :)...