合并两个数据框会删除一些行

问题描述

我有两个数据框,如下所示:
#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中找到它,但不能在合并的数据框中找到它。
不合并应该在我指定的列内采用元素的并集吗?

解决方法

您可以使用传递到howhttps://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html)的pd.merge参数来定义合并类型。默认为inner。如果需要联合,请设置how = 'outer'

,

merge命令默认使用inner合并(仅包括两个数据框中都存在的项目)。

您将需要使用outer合并来进行合并

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

请参阅DataFrame.merge文档