我有两个大型数据集想要合并,它们有一个共同的列名叫"gene"。
在df1中,所有条目都是唯一的。
在df1中,所有条目都是唯一的。
in [85]: df1
Out[85]:
gene
0 Cdk12
1 Cdk2ap1
2 Cdk7
3 Cdk8
4 Cdx2
5 Cenpa
6 Cenpa
7 Cenpa
8 Cenpc1
9 Cenpe
10 Cenpj
df2
Out[86]:
gene year DOI
0 Cdk12 2001 10.1038/35055500
1 Cdk12 2002 10.1038/nature01266
2 Cdk12 2002 10.1074/jbc.M106813200
3 Cdk12 2003 10.1073/pnas.1633296100
4 Cdk12 2003 10.1073/pnas.2336103100
5 Cdk12 2005 10.1093/nar/gni045
6 Cdk12 2005 10.1126/science.1112014
7 Cdk12 2008 10.1101/gr.078352.108
8 Cdk12 2011 10.1371/journal.pbio.1000582
9 Cdk12 2012 10.1074/jbc.M111.321760
10 Cdk12 2016 10.1038/cdd.2015.157
11 Cdk12 2017 10.1093/cercor/bhw081
12 Cdk2ap1 2001 10.1006/geno.2001.6474
13 Cdk2ap1 2001 10.1038/35055500
14 Cdk2ap1 2002 10.1038/nature01266
我希望保留df1的顺序,因为我将要将其与另一个数据集进行连接。
Dataframe 2每个“gene”有多个条目,我只想保留每个基因的一个条目。
“year”中最近的值将决定保留哪个“gene”条目。
我的尝试:读取文件到pandas中,然后命名列。
df1 = pd.read_csv('T1inorderforMerge.csv', header = None)
df2 = pd.read_csv('T2inorderforMerge.csv', header = None)
df1.columns = ["gene"]
df2.columns = ["gene","year","DOI"]
我已尝试下面代码的所有变化,即更改df的方式和顺序。
df3 = pd.merge(df1, df2, on ="gene", how="left")
我尝试了垂直和水平堆叠,虽然对一些人来说很明显,但并没有起作用。我还尝试了许多其他混乱的代码,但真的想看看是否可以使用pandas来实现这个目标。
df1
中的重复项,因为第5、6、7行中的Cenpa
是重复的。 - jezrael