Я получил несколько (15) фреймов данных.Они содержат значения, основанные на одной карте, но имеют фрагментарную форму.
Список образцов выглядит как A1 - 3k records, A2 - 6k records. B1 - 12k records, B2- 1k records, B3 - 3k records. C1...
и т. Д.
Все файлы имеют одинаковый формат, и выглядит так:
name sample position position_ID
String1 String1 num1 num1
String2 String2 num2 num2
...
Все файлы получены из различных биологическихмикрочипы.У разных компаний разные матрицы, поэтому разброс по размеру файлов.Но каждый из них основан на одной общей базе данных.Только некоторые данные из основной базы данных выбраны.Поэтому отдельные записи могут повторяться между файлами.Я хочу посмотреть, совместимы ли они.
Чего я хочу достичь в этой задаче?
Я хочу убедиться, что все записи одинаковы с точки зренияname
во всех файлах имеют одинаковую позицию и значения pos_ID.Если проверенная запись с тем же именем отличается по значениям в любом файле, она должна быть записана в error.csv.Если оно везде одинаковое - result.csv.
И, если честно, я не знаю, как его кусать, поэтому я намекаю здесь, что кто-то дает мне хороший совет.Я хочу сделать это в Python.У меня есть две идеи.
- Загрузите в Pandas все файлы как один фрейм данных и попробуйте написать функцию, фильтрующую всю DF-запись по записи (для цикла с операторами if?).
- Откройте отдельные файлы с помощью python
read file
и добавьте уникальные строки в новый список, и когда функция чтения снова столкнется с тем же recordName, она проверит его с предыдущим.Если все остальные значения одинаковы, он пропустит их без записи, если нет, запись будет записана в error.csv
.
Однако я боюсь, что они могут быть не самымиоптимальные методы, следовательно, спрашивать у вас совета и направлять меня на что-то лучшее?Я читал о NumPy, я еще не изучал его, но, может быть, стоит того, чтобы быть в контексте этой задачи?Может быть, есть функция, которая уже была создана для этого, и я не знаю об этом?
Может кто-нибудь помочь более разумным (возможно, более простым) решением?