Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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_Multiple Columns - Fatal编程技术网

Python 按列读取csv文件

Python 按列读取csv文件,python,csv,multiple-columns,Python,Csv,Multiple Columns,我有一个按行读取csv文件的代码 import csv with open('example.csv') as csvfile: readCSV = csv.reader(csvfile, delimiter=',') for row in readCSV: print(row) print(row[0]) 但是我只想要选定的栏目,有什么技巧可以给我一个脚本 import csv with open('example.csv') as csv

我有一个按行读取csv文件的代码

import csv

with open('example.csv') as csvfile:
    readCSV = csv.reader(csvfile, delimiter=',')
    for row in readCSV:
        print(row)
        print(row[0])
但是我只想要选定的栏目,有什么技巧可以给我一个脚本

import csv

with open('example.csv') as csvfile:
    readCSV = csv.reader(csvfile, delimiter=',')
    column_one = [row[0] for row in readCSV ]

将提供第一列中的值列表。话虽如此,您还是必须读取整个文件。

您不能这样做,因为文件是逐字节写入文件系统的。要知道一行的结束位置,必须读取所有行以检测是否存在换行字符。在CSV中没有办法解决这个问题

因此,您必须读取所有文件,但您可以选择要保留每行的哪些部分。

我肯定会使用它

然而,在普通python中,这是实现这一点的方法之一

在本例中,我提取第3行第4列的内容

import csv

target_row = 3
target_col = 4

with open('yourfile.csv', 'rb') as csvfile:
    reader = csv.reader(csvfile)
    n = 0
    for row in reader:
        if row == target_row:
            data = row.split()[target_col]
            break

print data

read\u csv
pandas
模块中可以加载
列的子集。
假设您只想在
.csv
文件中加载
1
3

import pandas as pd

usecols = [1, 3]
df = pd.read_csv('example.csv',usecols=usecols, sep=',')
这是供阅读的。
此外,如果您的文件很大,您可以通过在
read\u csv

中指定
chucksize
来逐个读取文件。当您说只需要选定的行时,您的意思是要完全跳过读取(从磁盘?)您不感兴趣的列,或者你只是想过滤掉你不感兴趣的列?想在CSV数据固定宽度中只读取我感兴趣的列吗?我认为这是你所问的唯一可能的方法,即使这样,除非你有很多很宽的(数据方面的)列,否则它也可能没有多大意义。为什么你认为你需要跳过阅读这些专栏?而且,要求我们“给你一个剧本”是非常不礼貌的;StackOverflow不是一个免费的代码编写服务,而是一个“我们帮助你帮助你自己”的平台。哇,我钦佩你的礼貌。如果有人问我“给我一个剧本”,我会有点不高兴。请投我一票!好吧,虽然我也希望看到一些尝试——我们都是从某件事开始的,有时这只是一个不了解如何才能做到的问题。参考可以是一个好的开始。(除此之外,网上还有很多人:D)