我有问题。我想将.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)
答案 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()
...