Я один dataframe, давайте назовем его df1
, с аа мультииндексного (только фрагментом, есть много больше столбцов и строк)Панды выравнивать мультииндексное dataframe с другими с регулярным индексом
M1_01 M1_02 M1_03 M1_04 M1_05
Eventloc Exonloc
chr10:52619746-52623793|- 52622648-52622741 0 0 0 0 0
chr19:58859211-58865080|+ 58864686-58864827 0 0 0 0 0
58864686-58864840 0 0 0 0 0
58864744-58864840 0 0 0 0 0
chr19:58863054-58863649|- 58863463-58863550 0 0 0 0 0
И еще dataframe, давайте перейдите с именем объявления df2
, вот так (это результаты разных алгоритмов, поэтому у них разные индексы). Столбцы одинаковы, хотя в первом случае они не сортируются.
M1_01 M1_02 M1_03 M1_04 M1_05
chr3:53274267:53274364:[email protected]:53271813:53271836:[email protected]:53268999:53269190:- 0.02 NaN NaN NaN NaN
chr2:9002720:9002852:[email protected]:9002401:9002452:[email protected]:9000743:9000894:- 0.04 NaN NaN NaN NaN
chr1:160192441:160192571:[email protected]:160190249:160190481:[email protected]:160188639:160188758:- NaN NaN NaN NaN NaN
chr7:100473194:100473333:[email protected]:100478317:100478390:[email protected]:100478906:100479034:+ NaN NaN NaN NaN NaN
chr11:57182088:57182204:[email protected]:57177408:57177594:[email protected]:57176648:57176771:- NaN NaN NaN NaN NaN
И у меня есть этот dataframe, снова давайте быть творческим и назвать его df3
, который объединяет показатели df1
и df2
:
Eventloc Exonloc
event_id
chr3:53274267:53274364:[email protected]:53271813:53271836:[email protected]:53268999:53269190:- chr3:53269191-53274267|- 53271812-53271836
chr2:9002720:9002852:[email protected]:9002401:9002452:[email protected]:9000743:9000894:- chr2:9000895-9002720|- 9002400-9002452
chr1:160192441:160192571:[email protected]:160190249:160190481:[email protected]:160188639:160188758:- chr1:160188759-160192441|- 160190248-160190481
chr7:100473194:100473333:[email protected]:100478317:100478390:[email protected]:100478906:100479034:+ chr7:100473334-100478906|+ 100478316-100478390
chr4:55124924:55124984:[email protected]:55127262:55127579:[email protected]:55129834:55130094:+ chr4:55124985-55129834|+ 55127261-55127579
мне нужно сделать 1: сравнение 1 из этих результатов , так что я пытался делать как
df1.ix[df3.head().values]
и
df1.ix[pd.MultiIndex.from_tuples(df3.head().values.tolist(), names=['Eventloc', 'Exonloc'])]
Но они оба дают мне данные кадра НС. Единственное, что работает это:
event_id = df2.index[0]
df1.ix[df3.ix[event_id]]
Но это, очевидно, неоптимальное, как это не векторные и очень медленно. Я думаю, что мне не хватает критической концепции MultiIndexes.
Спасибо, Ольга
Не могли бы вы попробовать 'df1.ix [pd.Index (df3.head(). values)]'? Я думаю, это может сработать для вас. – TomAugspurger
Как-то это все еще не работает, хотя я дважды и трижды проверил идентификаторы. –
Собственно, да, это сработало! Вся моя проблема заключалась в том, что я создал 'df1', сбросив индекс другого фрейма данных, и я взял только' head() ', и поэтому я не получал никакого перекрытия. –