我搜索了很多答案,最接近的问题是比较两个不同的pandas数据帧的2列,如果相同的插入1到另一个Python,但这个人的特殊问题的答案是一个简单的合并,它没有回答这个问题一般来说.
我有两个大型数据帧,df1(通常约为1000万行)和df2(约1.3亿行).我需要根据匹配两个df2列的两个df1列,使用三列df2中的值更新三列df1中的值.df1的顺序必须保持不变,并且只有具有匹配值的行才会更新.
这就是数据帧的样子:
df1
chr snp x pos a1 a2
1 1-10020 0 10020 G A
1 1-10056 0 10056 C G
1 1-10108 0 10108 C G
1 1-10109 0 10109 C G
1 1-10139 0 10139 C T
Run Code Online (Sandbox Code Playgroud)
请注意,并不总是"snp"的值是chr-pos的情况,它可能需要许多其他值而没有链接到任何列(如rs1234,indel-6032等)
df2
ID CHR STOP OCHR OSTOP
rs376643643 1 10040 1 10020
rs373328635 1 10066 1 10056
rs62651026 1 10208 1 10108
rs376007522 1 10209 1 10109
rs368469931 3 30247 1 10139
Run Code Online (Sandbox Code Playgroud)
只有当df1 [['chr','pos']]时,我需要用df2 [['ID','OCHR','OSTOP']]更新df1中的''snp','chr','pos']匹配df2 [['OCHR','OSTOP']]
所以在这种情况下,更新后,df1看起来像:
chr …Run Code Online (Sandbox Code Playgroud)