Python 3 ~ Как получить такой же результат с помощью модуля CSV - PullRequest
1 голос
/ 07 августа 2020

У меня есть это в моем коде:

with file:

csv = csv.reader(file,delimiter=",")



df = pd.read_csv(argv[1])
data = df.loc[:, df.columns != 'name'].to_numpy().tolist()
data.insert(0, df["name"].tolist())

, и это output результат, когда я запускаю print(data):

[['Alice', 'Bob', 'Charlie'], [2, 8, 3], [4, 1, 5], [3, 2, 5]]

Я хотел бы знать, как я тот же результат можно получить с помощью модуля CSV или для циклов

content:

name,AGATC,AATG,TATC
Alice,2,8,3
Bob,4,1,5
Charlie,3,2,5

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Подойдет ли вам?

import csv
from sys import argv

def csv_to_list_of_lists(csv_file):
    
    with open(csv_file) as f:
        reader = csv.reader(f, delimiter=',')

        number_of_columns = len(next(reader))#Notice how next() enables to skip the header row
        
        data = [[] for x in range(number_of_columns)] 
        
        for index, line in enumerate(reader):
            data[0].append(line[0])
            values = [int(x) for x in line[1:]]
            data[index+1] = values

    return data

output = csv_to_list_of_lists(argv[1])
print(output)

результат:

[['Alice', 'Bob', 'Charlie'], [2, 8, 3], [4, 1, 5], [3, 2, 5]]
1 голос
/ 07 августа 2020
import csv

with open('file.csv', newline='') as csvfile:
    csvreader = csv.reader(csvfile)
    next(csvreader) # skip headers
    names = []
    data = []
    for row in csvreader:
        names.append(row[0])
        data.append(list(map(int, row[1:])))

print([names] + data)

Печать:

[['Alice', 'Bob', 'Charlie'], [2, 8, 3], [4, 1, 5], [3, 2, 5]]

РЕДАКТИРОВАТЬ:

import csv

with open('file.csv', newline='') as csvfile:
    csvreader = csv.reader(csvfile)
    next(csvreader) # skip headers
    names = []
    data = []
    for row in csvreader:
        names.append(row[0])
        data.append(list(map(int, row[1:])))

all_data = [names] + data

print(all_data[0])
print(all_data[1])

Печать:

['Alice', 'Bob', 'Charlie']
[2, 8, 3]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...