Слияние двух фреймов данных удаляет некоторые строки

#python #pandas #dataframe #merge

#python #панды #фрейм данных #слияние #pandas

Вопрос:

У меня есть два фрейма данных, которые выглядят следующим образом:
# 1

 Approved symbol RefSeq IDs  Ensembl gene ID
A1BG    NM_130786   ENSG00000121410
A1BG-AS1    NR_015380   ENSG00000268895
A1CF    NM_014576   ENSG00000148584
A1S9T       
A2M NM_000014   ENSG00000175899
A2M-AS1 NR_026971   ENSG00000245105
  

#2

 Approved symbol RefSeq IDs  Ensembl gene transcript ID
DDX11L1 NR_046018   ENST00000456328
DDX11L1     ENST00000456328
DDX11L1     ENST00000518655
OR4F5   NM_001005484    ENST00000335137
DQ597235        n/a
DQ599768        n/a
  

Это не весь фрейм данных целиком, а только головной.

То, что я хотел сделать, это объединить оба файла в соответствии с первым столбцом, поэтому я выполнил следующие команды:

 df1 = pd.read_csv('human_conversion_by_gene_symbol', sep='t')
df2 = pd.read_csv('human_conversion_transcript', sep='t')

df3 = df1.merge(df2, on=['Approved symbol'])

df3.to_csv('merged_human_conversion', sep='t')
  

Проблема начинается сейчас, я, кажется, не нахожу некоторые значения, которые я нахожу в исходных фреймах данных.
Например, я ищу MIR4430 (который принадлежит первому столбцу), и я могу найти его в df1 , но не в объединенном фрейме данных.
Не предполагается, что слияние приведет к объединению элементов внутри указанного мной столбца?

Ответ №1:

Вы можете определить тип слияния, используя how аргумент, переданный в pd.merge (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas .DataFrame.merge.html). Это inner по умолчанию. Если вы хотите объединение, установите how = 'outer' .

Ответ №2:

merge команда по умолчанию использует inner слияние (включает только элементы, которые существуют в обоих фреймах данных).

вам нужно было бы использовать outer слияние, чтобы выполнить объединение

 df3 = df1.merge(df2, on=['Approved symbol'], how='outer')
  

обратитесь к документам DataFrame.merge