加载csv文件中的所有行 - Python

时间:2017-01-15 16:53:41

标签: python numpy

我想将csv文件加载到python中。 csv文件包含随机数学生的成绩和随机数量的作业。

我希望python删除标题和第一列(学生姓名),这是我的代码:

with open("testgrades.csv") as f:

ncols = len(f.readline().split(','))
nrows = sum(1 for row in f)
grades = np.loadtxt("testgrades.csv", delimiter=',', skiprows=1, usecols=range(1,ncols+1))
print(document1)

代码适用于列,但如果我在csv文件中添加一行或多行,则无法处理?

我的CSV文件:

csv

从Python输出:

Output

2 个答案:

答案 0 :(得分:0)

您的csv图片看起来像是乱糟糟的电子表格图片。它不是csv文件本身的副本,它是纯文本。您应该可以将该文本复制粘贴到您的问题中。

Output图片是一个数组,其数字与csv图片的前6行相对应。

你的问题不明确。我猜你在电子表格中添加了最后两行,并且在将这些行加载到numpy时遇到了问题。我不会在电子表格图片中看到这些数字有任何问题。但是,如果您显示实际的csv文件内容,我们可能会发现问题。也许你实际上并没有将这些添加的行写入csv文件。

您的代码示例带有更正的缩进:

with open("testgrades.csv") as f:
    ncols = len(f.readline().split(','))
    nrows = sum(1 for row in f)
grades = np.loadtxt("testgrades.csv", delimiter=',', skiprows=1, usecols=range(1,ncols+1))
print(grades)

我可以看到使用ncols来确定列数。 usecols参数需要明确的列列表,而不是某种all-but-first。您也可以从普通loadtxt(或genfromtxt)获得该号码。

但为什么要计算nrows?你似乎没有使用它。 loadtxt中不需要它。如果您需要限制读取的行数,genfromtxt允许max_rows参数。

答案 1 :(得分:-2)

Python有一个特殊的模块,用于读取和写入CSV文件Python CSV

Python 2

import csv
with open('testgrades.csv', 'rb') as f:

Python 3

import csv
with open('testgrades.csv', newline='') as f: