在python中读取.csv的特定行数
我有一个试图读入python的csv文件,然后我想将前两列存储在名为name和gender的变量中。我当前使用的代码如下所示:在python中读取.csv的特定行数,python,csv,Python,Csv,我有一个试图读入python的csv文件,然后我想将前两列存储在名为name和gender的变量中。我当前使用的代码如下所示: import csv infile = open('blue.csv', 'r') csvfile = csv.reader(infile) name = [] gender = [] for row in csvfile: name.append(row[0]) gender.append(row[1]) 我遇到了两个问题: 1) csv文件有标
import csv
infile = open('blue.csv', 'r')
csvfile = csv.reader(infile)
name = []
gender = []
for row in csvfile:
name.append(row[0])
gender.append(row[1])
我遇到了两个问题:
1) csv文件有标题,所以我不希望在存储列时将这些标题包含在变量中
2) 我缺少csv文件最后一行的性别,因此我不希望在将csv文件的最后一行存储在变量中时包含它
我是一名R
程序员,因此对我来说,解决这个问题的方法是读取文件,不包括第一行和最后一行,但我不确定如何在python中实现这一点,或者更好,如果有更好/更智能的替代方案
如果有帮助,下面是模拟数据集的外观:
Name, Gender
Bob, Male
Susan, Female
Doug,
可以将切片与“尝试除外”循环结合使用,如下所示:
for row in csvfile[1:]:
try:
gender.append(row[1])
name.append(row[0])
except:
continue
此代码跳过任何没有性别的行,而不仅仅是最后一行。您编写的
import csv
with open('data.csv', 'r') as f1:
numberOflines = len([line for line in f1]) -2
f1.seek(0)
r = csv.reader(f1)
next(r, None) # skip first line
for row in r:
if numberOflines > 0:
print(row[0])
numberOflines -=1
我是一名R程序员,所以对我来说,我解决这个问题的方法是读取文件,不包括第一行和最后一行,但我不确定如何在python中实现这一点
这可以通过以下方式实现:
此外,请注意,它同时接受文件对象和列表:
csvfile可以是任何支持迭代器协议的对象,并且每次调用其next()方法时都会返回一个字符串-文件对象和列表对象都是合适的
因此,您只需使用:
for l in csv.reader(open('foo.csv').readlines()[1: -1]):
...
由于你是一名R程序员,我建议你试试 1) csv文件有标题,所以我不希望在存储列时将这些标题包含在变量中 您可以读取csv,它无需任何设置即可处理标题 2) 我缺少csv文件最后一行的性别,因此我不希望在将csv文件的最后一行存储在变量中时包含它 我认为您的要求是跳过缺少数据的行,您可以使用 因此,编码部分:
In [1]: import pandas as pd
In [2]: !cat sample_data.csv
Name, Gender
Bob, Male
Susan, Female
Doug,
In [3]: pd.read_csv("./sample_data.csv").dropna()
Out[3]:
Name Gender
0 Bob Male
1 Susan Female
您可以添加csv示例吗?我添加了,它位于模拟数据集中。模拟数据集不是我的python代码。如果您有权使用pandas,请查看:
In [1]: import pandas as pd
In [2]: !cat sample_data.csv
Name, Gender
Bob, Male
Susan, Female
Doug,
In [3]: pd.read_csv("./sample_data.csv").dropna()
Out[3]:
Name Gender
0 Bob Male
1 Susan Female