将每列从csv存储到列表?

时间:2018-02-13 21:17:26

标签: python csv

我有问题。我想将.csv文件中的每一列存储到列表中。 所以,如果我有像https://i.stack.imgur.com/WuRyt.png

这样的csv文件

我希望以下列的方式存储它:

ColumnA = [50-001, 50-002, 50-003, 50-004, 50-005, 50-006, 50-007, 50-008, 50-009]
ColumnB = [85-001, 85-003, 85-004 , 85-004 ,85-004 , 85-005 ,85-005, 85-006 ,85-007]

我现在有这样的东西,但它存储每一行​​列表,但我需要每列到列表。有人能帮我吗?我也试过大熊猫,我也做不到。

csvfile = open('Kody pocztowe csv.csv', 'r')

csv1 = csv.reader(csvfile,delimiter = ',')
sort = sorted(csv1, key=operator.itemgetter(0))

for eachline in sort:
    print(eachline)

csvfile.readline()

lx = []
for line in csvfile:
    row = line.split(',')
    lx.append(row)

print(lx)

4 个答案:

答案 0 :(得分:2)

这是一个非熊猫版本(需要Python3)。可以transpose an array使用zip或相关的itertools.zip_longest()

from itertools import zip_longest
import csv

# Read the data in organized by rows
with open('Kody pocztowe csv.csv') as csvfile:
    row_data = list(csv.reader(csvfile, delimiter=';'))

# Transpose data into column organization
col_data = list(zip_longest(*row_data))

# OP asked for individual column variables
ColumnA, ColumnB, ColumnC, ColumnD = col_data[:4]

print("ColumnA = ", ColumnA)
print("ColumnB = ", ColumnB)
print("ColumnC = ", ColumnC)
print("ColumnD = ", ColumnD)

输入文件:

00;01;02;03
10;11;12
20;21;22;23;24

结果:

ColumnA =  ('00', '10', '20')
ColumnB =  ('01', '11', '21')
ColumnC =  ('02', '12', '22')
ColumnD =  ('03', None, '23')

答案 1 :(得分:0)

嗯,我是用大熊猫做的,这里是如何:

import pandas as pd
df = pd.read_csv("yourdoc.csv")
columnTitles = list(df)
listOfResults = []
for eachCol in columnTitles:
    listOfResults.append(df[eachCol].tolist())

然后你应该有一个列表或列列表。

答案 2 :(得分:0)

问题是分隔符是“;”和 不是逗号。

确保row = line.split('; ')

  instead of line.split('**,**')

答案 3 :(得分:0)

使用numpys genfromtxt:

import numpy as np
data=np.genfromtxt('Kody pocztowe csv.csv',delimiter=';',dtype=float)
#access columns as:
column1=data[:,0].tolist()
column2=data[:,1].tolist()
...