我想将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文件:
从Python输出:
答案 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: