我是python的新手。 我想从* .csv文件中获取整个列。 为了做到这一点,我看到我最好的方法是将我的csv转换为2-dim。数组使用:
> import numpy as np
> csv=np.genfromtxt(file_name.csv, delimeter=",")
,例如,如果我想抓住第8列只是为了写:
column8 = CSV [:1,7]
我的问题是我有双引号的字段,其中有逗号,所以我有一个ValueError:
ValueError:检测到一些错误!
Line #6 (got 16 columns instead of 15) Line #21 (got 16 columns instead of 15) Line #45 (got 18 columns instead of 15) etc.
所以我想要的是,如果这是我的csv:
A,B,C,d
F,G,H, “I,J”
K,L,M, “N,O,P”
所以,例如,如果我想抓住第4列,我希望答案是:
d
I,J
N,O,P
任何想法?
谢谢!!!
答案 0 :(得分:1)
Python的内置csv
模块可以很好地处理默认设置。所以这应该有效:
import csv
with open("file_name.csv", "r", newline='') as f:
reader = csv.reader(f)
column8 = [row[7] for row in reader]
first example中的module's documentation略有不同,其中包含其他有用信息。
答案 1 :(得分:0)
pandas非常适合从csv文件中读取。
尝试使用:
df = pandas.read_csv("filename.csv", delimeter=",") # header=None)
之后,访问列
df['colname'] # or df[col_ind] if you set header=None
答案 2 :(得分:0)
使用pandas包将解决您的问题。由于pandas有各种各样的方法,我们可以从中读取不同的文件格式。
import pandas as pd
df = pd.read_csv("filename.csv")
print df[column4]
答案 3 :(得分:0)
与taleinat的解决方案类似,但如果你知道header_name并想要返回一个列表。
import csv
with open(FILENAME, "rb") as MEDIA:
headers = []
columns = []
required_header = "name"
csv_file = csv.reader(MEDIA, quoting=csv.QUOTE_NONE, delimiter=DELIMITER)
for row in csv_file:
headers = row[:]
break
position = headers.index(required_header)
[columns.append(row[position]) for row in csv_file]
return columns