【问题标题】:Convert .csv file into columns with python使用python将.csv文件转换为列
【发布时间】:2020-02-27 16:44:10
【问题描述】:

我有一个.csv 文件,其中的数据用逗号分隔,我想将它分隔成列。为此,我试图将每个行元素放入列表中,然后将它们放入新文件的列中。我使用的代码如下:

import csv

c1 = []
c2 = []
c3 = []
with open('File.csv', 'r') as f:
   reader = csv.reader(f, delimiter=',')
   for row in reader:
       c1.append(row[0])
       c1.append(row[1])
       c1.append(row[2])

出于某种原因,我可以将 .csv 文件的列存储在 c1 中。对于 c2 和 c3 我得到一个错误。似乎“阅读器”在获取当前行的第一个元素后立即跳转到下一行。有人可以给我一个想法吗?也许还有更简单的方法?

【问题讨论】:

  • 可以使用 pandas 来做我认为你想做的事情
  • 感谢 Nathan,但它不适用于我的 .csv 文件。我正在使用的文件有大约 380 行。不知何故,当我使用 Pandas 时,我收到以下错误消息:pandas.errors.ParserError: Error tokenizing data。 C 错误:预计第 6 行中有 2 个字段,看到 9。这就是我开始寻找另一种方法的原因。就我而言,我唯一的起点就是这个 .csv 文件。没有以前的列表。

标签: python csv text-to-column


【解决方案1】:

那里有句法错误。 您将所有内容附加到 c1 中,而不是将值放入各种列表中。

假设 [big one!] - csv 文件每行仅包含 3 列。

我用下面的代码测试过

import csv

c1 = []
c2 = []
c3 = []
with open('csvfile.csv', 'r') as f:
   reader = csv.reader(f, delimiter=',')
   for row in reader:
       c1.append(row[0])
       c2.append(row[1])
       c3.append(row[2])
print(f'column1:{c1}')
print(f'column2:{c2}')
print(f'column3:{c3}')

输出

% python3 csv_to_column.py
column1:['1', '4', '7']
column2:['2', '5', '8']
column3:['3', '6', '9']

参考 - 虚拟 csv 文件

% cat csvfile.csv
1,2,3
4,5,6
7,8,9

【讨论】: