Сравните два file_csv-файла, используя pandas DataFrame, чтобы найти разницу и объединить F2 в F1

#python #pandas #dataframe #data-science

#python #pandas #фрейм данных #наука о данных

Вопрос:

Мне нужна помощь, чтобы решить эту проблему. Если у кого-нибудь есть идея создать скрипт, используя panda DataFrame с python3:

У меня есть два файла набора данных CSV, слишком длинные, чтобы поместиться в panda DataFrame display. Они имеют следующую структуру:

 F1: 
   gene disease
0  g1   d1
1  g1   d2
2  g1   d3
3  g2   d2
4  g2   d3
5  g2   d4
6  g3   d2
7  g3   d4
8  g4   d1
9  g4   d3

F2:
  gene  phenotype
0  g1   ph1
1  g1   ph2
2  g2   ph2
3  g2   ph3
4  g2   ph4
5  g3   ph4
6  g4   ph1
7  g4   ph3
8  g5   ph4
9  g6   ph2
  

g= gene_name(строка, интервал, с плавающей точкой), d = disease_name (строка) ph= фенотип

Основная цель — сравнить все гены в F2 с генами в F1, и если они совпадают, добавить название гена и фенотип, связанный с заболеванием, чтобы получить выходной файл F3, содержащий все заболевания, связанные с фенотипом генами.

Это ожидаемый результат:

 gene disease phenotype
g1   d1      ph2
g1   d2      ph2
g2   d2      ph1
g2   d3      ph2
ect. 
  

Кто-нибудь может помочь мне создать скрипт? Буду признателен за любую помощь. Спасибо!

Комментарии:

1. Где находится ph1 in g1 в вашем ожидаемом выводе?

Ответ №1:

У вас есть соотношение 1 ко многим между геном и фенотипом и соотношение один ко многим между геном и болезнью. Если вы присоединитесь к gene, будет много ко многим. Смотрите пример вывода. Это то, что вы ищете?

 data = [
    ["g1", "d1"], 
    ["g1", "d2"],
    ["g1", "d3"],
    ["g2", "d2"], 
    ["g2", "d3"]
]
f1 = pd.DataFrame(data, columns={"gene", "disease"})


data = [
    ["g1", "ph1"], 
    ["g1", "ph2"],
    ["g2", "ph2"], 
    ["g2", "ph3"]
]
f2 = pd.DataFrame(data, columns={"gene", "phenotype"})

f1.merge(f2)



idx gene disease phenotype
0   g1  d1  ph1
1   g1  d1  ph2
2   g1  d2  ph1
3   g1  d2  ph2
4   g1  d3  ph1
5   g1  d3  ph2
6   g2  d2  ph2
7   g2  d2  ph3
8   g2  d3  ph2
9   g2  d3  ph3
  

Комментарии:

1. В учебных целях я пытаюсь написать псевдоалгоритм для приведенного выше объединения фенотипа и заболеваний. любая помощь приветствуется.