如何从python中的csv文件将数据存储在数组列中

时间:2018-07-12 07:11:32

标签: python-3.x

假设我有一个csv文件,其中包含五列,每列具有200个数据。 我使用了这两个代码,但是其中两个存储行数据。谁能告诉我如何直接将.csv文件中的每一列存储为python中的单个数组?

代码1:

import csv
with open("figure1_plotdata.csv") as f:
    reader = csv.reader(f)
    next(reader)
    data = [r for r in reader]
print (data)

代码2:

from numpy import genfromtxt
my_data = genfromtxt('figure1_plotdata.csv', delimiter=',')
print (my_data)

2 个答案:

答案 0 :(得分:1)

如果要将CSV文件转换为列表,其中单个列表对应于一列,则可以使用pandas加载csv并应用转置以获得所需的结果。

可以这样做。

Warning: PHP Startup: PDFlib: Unable to initialize module
Module compiled with module API=20160303
PHP    compiled with module API=20170718
These options need to match`Warning: PHP Startup: PDFlib: Unable to 
initialize module

示例数据框

import pandas as pd

df = pd.read_csv('your_file_name.csv')

data_list = df.T.values.tolist()

print(data_list)

结果

A   B   C
1   10  11
2   20  22
3   30  33

答案 1 :(得分:0)

尝试类似这样的方法。将数据存储在csv文件中的二维数据数组data [i] [j]中,其中i为列,j为行,两个索引均从0开始。(基本上是对原始数据进行转置)

import csv

file_name = 'figure1_plotdata.csv'
data = [[] for i in range(5)]

with open(file_name) as csvfile:
    csvdata = csv.reader(csvfile, dialect='excel', delimiter=',')

    '''  store column value in a 2 dimensional data array data[i][j] 
         with i being the column and j the row '''
    for row in csvdata:
        for i, column in enumerate(row):
            data[i].append(column)

for i, column in enumerate(data):
    for j, value in enumerate(column):
        print(f'row {j}, column {i}: {value}')