繁体   English   中英

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

[英]Load all rows in csv file - Python

我想将一个 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 的输出:

输出

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

Output图像是一个数组,其数字对应于csv图像的前 6 行。

你的问题不清楚。 我猜您将最后 2 行添加到电子表格中,并且在将它们加载到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参数。

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

蟒蛇 2

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

蟒蛇 3

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM