Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中读取.csv的特定行数_Python_Csv - Fatal编程技术网

在python中读取.csv的特定行数

在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文件有标

我有一个试图读入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文件有标题,所以我不希望在存储列时将这些标题包含在变量中

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