将每列从CSV存储到列表



我有问题。我想将.CSV文件中的每一列存储到列表中。因此,如果我有像这样的CSV文件,例如https://i.stack.imgur.com/wuryt.png

我想以:

的方式存储它
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)

这是一个非pandas版本(需要python3(。可以使用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')

好吧,我是用熊猫做的,这是:

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

然后您应该有一个列表或列的列表。

问题是定界符是";"和不是逗号。

确保Row = line.split('; '(

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

使用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()
...

最新更新