使用csv.reader将文件读入列表,但跳过特定列(Python)

使用csv.reader将文件读入列表,但跳过特定列(Python),python,Python,您好,提前谢谢您的帮助。我是Python新手,我发现并尝试了许多解决方案,但似乎无法获得正确的输出 我有一个包含多个列的csv文件。我想跳过字段名/第一行,然后将文件读入列表。我还想跳过一列,结果是:第1列、第2列、第3列、第5列。。。我想这样做是因为我正在合并另外两个csv文件(转换为列表),它们具有不同的结构 这是我发现csv文件有不同结构之前的原始代码 #convert input file1 to list reader = csv.reader(file1,delimiter=',')

您好,提前谢谢您的帮助。我是Python新手,我发现并尝试了许多解决方案,但似乎无法获得正确的输出

我有一个包含多个列的csv文件。我想跳过字段名/第一行,然后将文件读入列表。我还想跳过一列,结果是:第1列、第2列、第3列、第5列。。。我想这样做是因为我正在合并另外两个csv文件(转换为列表),它们具有不同的结构

这是我发现csv文件有不同结构之前的原始代码

#convert input file1 to list
reader = csv.reader(file1,delimiter=',')
next(reader)    
list_1 = []
list_1 = list(reader)
我试过:

reader = csv.reader(file1,delimiter=',')
next(reader)
included_cols = [0, 1, 2, 3, 5, 6, 7]

for row in reader:
    content = list(row[i] for i in included_cols)

list_1 = list(content)
但当我将三个列表合并到一个排序列表中时,这并不能正确地输出,如下所示:

unsortedList = list_1 + list_2 + list_3
然后我创建一个排序列表:

sortedList = sorted(unsortedList,key=operator.itemgetter(0))
并尝试按如下方式输出文件:

with open('output.csv','a') as result_file:
    wr = csv.writer(result_file, dialect='excel')
    wr.writerows(sortedList)
结果输出:
一般来说,我会用熊猫来代替。假设您有一个名为
test.CSV
的CSV文件:

a,b,c,d
1,2,3,4
5,6,7,8
我们可以用熊猫来阅读:

导入itertools
作为pd进口熊猫
df=pd.read_csv('test.csv',skiprows=[0],usecols=[0,1,3],header=None)
打印(df)
0  1  3
0  1  2  4
1  5  6  8
然后,您可以从行生成列表,如下所示:

lists = df.values.tolist()
最后是一个列表:

merged = list(itertools.chain(*lists))
print(merged)
[1, 2, 4, 5, 6, 8]
将“list_1”设置为空列表,并将“content”中的每个列表“append”到for循环中的“list_1”。所以你会得到一个列表。