извлекать указанные c данные из файла CSV с указанными именами строк и столбцов - PullRequest
0 голосов
/ 10 июля 2020

CSV-модуль python для меня довольно новый, и я хотел бы получить некоторую помощь с конкретной задачей c. Я хочу извлечь данные (numeri c values) из csv-file-1 на основе его имен строк и столбцов. Во-вторых, я хотел бы поместить эти данные в другой csv-файл, в новом столбце, в той же строке, соответствующей исходным данным имени из csv-file-1.

Вот примеры двух моих фреймов данных (формат csv, sep = ","): csv-file-1:

seq_label,id3,id4
id1,0.3,0.2
id2,0.4,0.7

csv-file-2:

seq_label,x1,...
id1,id3,...
id2,id4,...

Например, я хотел бы выбрать значения из csv-file-1, которые соответствуют пересечению имен строк переменных «seq_label» и «x1» в csv-file-2. Затем я хотел бы создать новый csv-файл (csv-file-3), который представляет собой слияние csv-file-1 и извлеченных данных из csv-file-1 следующим образом:

csv-file-3 («x3» - новая переменная или новый столбец с извлеченными значениями):

seq_label,x1,...,x3
id1,id3,...,0.3
id2,id4,...,0.7

Может ли кто-нибудь помочь мне в этом?

С уважением

Ответы [ 2 ]

0 голосов
/ 10 июля 2020

Библиотека csv вернет вам список для каждой строки. То, что вы хотите сделать, это

read the first csv
and convert it into something you can use (depends on whether you want row or column based access
do the same for csv2
for each line of csv1 search for a match in csv2
and add it to your internal data
write this data to your output file

Возможно, вы также захотите посмотреть https://pandas.pydata.org/, поскольку кажется, что вы могли бы сэкономить много времени, используя pandas вместо простого csv методы.

0 голосов
/ 10 июля 2020

Это просто пример с комментариями, объясняющими шаги. Надеюсь, это вам поможет.

import csv

with open("path to file", "r") as f:    # to open the file with read mode
     r = csv.reader(f)                  # create a csv reader
     content = list(r)                  # get the content of the file in a list
     column = ["x3", 0.3, 0.7, ...]     # prepare the last column
     content.append(column)             # add it to content list
     with open("path to file 2", "w") as f2 :   ## Open file 2 in order to write into it
         w = csv.writer(r, newline='')
         w.writerows(content)                   ## write the new content
...