Я пытаюсь объединить два panda data.frames по индексу, но получаю пустой data.frame.
Я следую решениям, опубликованным по этой ссылке Python Dataframes не объединяются по индексу
, но это не работает,
Это мои два фрейма данных
>>>norm_df.head()
eQTL-103 eQTL-105 eQTL-106 eQTL-111 eQTL-112 \
transcript_id
ENST00000456328.2 -0.418029 -0.418029 -0.418029 -0.418029 0.733977
ENST00000488147.1 0.330873 -1.786156 0.562062 0.023212 0.380326
ENST00000466430.5 1.128144 -1.914506 -0.589456 -0.430727 -0.796183
ENST00000442987.3 1.446104 -0.508488 0.895780 0.306454 0.828465
ENST00000494149.2 0.674490 -1.085325 -0.828465 0.116309 -0.186756
eQTL-115 eQTL-126 eQTL-127 eQTL-131 eQTL-133 \
transcript_id
ENST00000456328.2 1.786156 -0.418029 1.382994 -0.418029 0.861634
ENST00000488147.1 1.005170 -1.044409 -1.515564 1.324958 0.000000
ENST00000466430.5 0.282216 -1.593219 0.828465 0.589456 0.430727
ENST00000442987.3 -0.931003 0.258143 0.535083 1.786156 -0.210428
ENST00000494149.2 -0.562062 0.306454 -0.861634 0.282216 0.430727
eQTL-80 eQTL-85 eQTL-87 eQTL-94 eQTL-96 eQTL-97
transcript_id
ENST00000456328.2 -0.418029 -0.418029 1.005170 -0.418029 -0.418029 -0.418029
ENST00000488147.1 -0.967422 -0.482248 -0.764710 0.895780 0.116309 -0.931003
ENST00000466430.5 0.508488 0.023212 -0.931003 -0.562062 0.861634 -1.382994
ENST00000442987.3 -1.914506 0.380326 -0.482248 -0.116309 0.674490 -1.005170
ENST00000494149.2 -1.515564 -0.430727 -0.023212 0.617300 0.186756 -0.046436
[5 rows x 107 columns]
>>> bed_template_df.head()
chr start end transcript_id
transcript_id
ENST00000456328.2 chr1 11868 11869 ENST00000456328.2
ENST00000450305.2 chr1 12009 12010 ENST00000450305.2
ENST00000488147.1 chr1 29569 29570 ENST00000488147.1
ENST00000619216.1 chr1 17435 17436 ENST00000619216.1
ENST00000473358.1 chr1 29553 29554 ENST00000473358.1
Я пробовал pd.merge
bed_df = pd.merge(bed_template_df, norm_df, left_index=True, right_index=True)
но в результате получается пустой data.frame
Я пытался установить одинаковый тип для обоих индексов
norm_df.index = norm_df.index.astype(str)
bed_template_df.index = bed_template_df.index(str)
Но это не работает, когда я указал how
в команде слияния я получаю этот результат
>>> bed_df = pd.merge(bed_template_df, norm_df, left_index=True, right_index=True, how='right')
>>> bed_df.head()
chr start end transcript_id eQTL-103 eQTL-105
transcript_id
ENST00000456328.2 NaN NaN NaN NaN -0.418029 -0.418029
ENST00000488147.1 NaN NaN NaN NaN 0.330873 -1.786156
ENST00000466430.5 NaN NaN NaN NaN 1.128144 -1.914506
ENST00000442987.3 NaN NaN NaN NaN 1.446104 -0.508488
ENST00000494149.2 NaN NaN NaN NaN 0.674490 -1.085325
Похоже, что python не находит два равных индекса, но я вижу, что ENST00000456328.2
в bed_template_df
существует в norm_df