Я новичок в Python и переполнении стека.
Я извлекаю из CSV-файла несколько столбцов во временный CSV-файл и очищаю данные для удаления записей Nan. После того, как я их извлек, я заканчиваю двумя файлами CSV.
Основной файл CSV:
Сортировка, Родитель 1, Родитель 2, Родитель 3, Родитель 4, Родитель 5, Имя, Родитель 6
1, Джон ,,, Ned ,, Dave
2, Сэм, Майк ,,,, Ken
3 ,,, Пит ,,, Стив
4, Керри ,, Rachel ,, Роге
5 ,,, Лора Митчелл ,, Ким
Извлеченный CSV:
Имя, ParentNum
Дейв, Родитель 4
Кен, родитель 2
Стив, Родитель 3
Рог, Родитель 4
Ким, родитель 4
Что я пытаюсь сделать, так это то, что я хотел бы пройти через main csv, используя имя и родительский номер. Но если я напишу цикл for, он напечатает пустые строки, потому что он ищет каждую строку для первого значения. Что является лучшим подходом вместо цикла. Я пытался читатель словаря читать SCV, но не мог далеко уйти Любая помощь будет оценена.
КОД:
import xlrd
import csv
import pandas as pd
print('Opening and Reading the msl sheet from the xlsx file')
with xlrd.open_workbook('msl.xlsx') as wb:
sh = wb.sheet_by_index(2)
print("The sheet name is :", sh.name)
with open(msl.csv, 'w', newline="") as f:
c = csv.writer(f)
print('Writing to the CSV file')
for r in range(sh.nrows):
c.writerow(sh.row_values(r))
df1 = pd.read_csv(msl.csv, index_col='Sort')
with open('dirty-processing.csv', 'w', newline="") as tbl_writer1:
c2 = csv.writer(tbl_writer1)
c2.writerow(['Name','Parent'])
for list_item in first_row:
for item in df1[list_item].unique():
row_content = [item, list_item]
c2.writerow(row_content)
Ожидаемый результат:
Введите основной CSV:
введите описание изображения здесь
В приведенном выше CSV я хотел бы получить уникальные значения из каждого столбца в отдельный файл или любой другой тип данных. Затем также захватите заголовок столбца, из которого они взяты.
Ex:
Negarnaviricota, Филюм
Haploviricotina, Подтип
...
и так далее
Следующее, что хотелось бы сделать, - это получить его родителя. Вот где я застрял. Кроме того, как вы видите, не все столбцы содержат данные, поэтому я хочу получить последний непустой столбец. До этого момента все выполнялось с использованием приведенного выше кода. Таким образом, пример вывода должен выглядеть следующим образом.
введите описание изображения здесь