我有两份资料档案。我需要合并/联接给定列中相同的两个文件中的行。在
文件A:
#chr #start #end #gene #0 #strand
chrM 3307 4262 MT-ND1 0 +
chrM 4470 5511 MT-ND2 0 +
chrM 12337 14148 MT-ND5 0 +
文件B:
^{2}$我的结果输出应该如下所示(基本上文件B与文件A排序类似):
#chr #start #end #gene #0 #strand #e_chr #e_start #e_end #e_id #0 #strand
chr1 3307 4262 MT-ND1 0 + chr1 161423805 161424053 Larp7-Chip.MACS2_peak_9703 0 .
chr1 4470 5511 MT-ND2 0 + chr1 161429385 161429489 Larp7-Chip.MACS2_peak_9705 0 .
chr1 12337 14148 MT-ND5 0 + chr1 161427010 161427243 Larp7-Chip.MACS2_peak_9704 0 .
我尝试使用pandas.DataFrame.merge
来执行以下操作:
import pandas as pd
import numpy as np
FileA = pd.read_table("FileA.txt")
FileB = pd.read_table("FileB.txt")
results = FileA.merge(FileB, how='left', left_on='gene', right_on='gene')
results = results.dropna()
一开始这似乎很管用,但有些行不见了。文件A有19000行,文件B有4800行。但是我的输出文件只有大约3,8k,而我期望它有4800。我做错什么了?有什么更简单的方法吗?我是python新手。在
按照您的描述,您应该使用
how='right'
或者,或者:FileB.merge(FileA, how='left', on='gene')
说明:
将来自
^{pr2}$a
的所有行与来自b
匹配的行合并:a.merge(b, how='left')
将来自
b
的所有行与来自a
匹配的行合并:b.merge(a, how='left')
或者:
相关问题 更多 >
编程相关推荐