#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
ing1
в вашем ожидаемом выводе?
Ответ №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. В учебных целях я пытаюсь написать псевдоалгоритм для приведенного выше объединения фенотипа и заболеваний. любая помощь приветствуется.