我有两个.tsv文件,如下所示:
ID prop name size
A x rob 2
B y sally 3
C z debby 5
D w meg 6
和
ID lst_name area
A sanches 4
D smith 7
C roberts 8
我将它们加载到pandas DataFrames中,并希望将它们合并,以便获得一个新的dataFrame:
ID-name prop name size lst_name area
A x rob 2 sanches 4
B y sally 3
C z debby 5 roberts 8
D w meg 6 smith 7
我一直在尝试使用pd.merge()
完成此操作,但以下方面存在问题:
df = pd.DataFrame.from_csv("a.tsv", sep='\t')
df1 = pd.DataFrame.from_csv("b.tsv", sep='\t')
result = pd.merge(df, df1, how='inner',on=["ID","ID-name"])
是否可以通过熊猫完成像这样的合并?
答案 0 :(得分:0)
您需要的是左连接(或外部连接,当然,这取决于您的情况),因为在此示例中,您也希望查看B的记录,即使它在df1上没有记录。
result = pd.merge(df, df1, how="left",on=["ID","ID"])
prop name size lst_name area
ID ID
A A x rob 2 sanches 4.0
B B y sally 3 NaN NaN
C C z debby 5 roberts 8.0
D D w meg 6 smith 7.0
答案 1 :(得分:0)
这是使用join
的一种方法df1 = pd.DataFrame({'ID':['A','B','C','D'],'prop':['x','y','z','w'],'name':['rob','sally','debby','meg'],'size':[2,3,5,6]})
df2 = pd.DataFrame({'ID':['A','D','C'],'lst_name':['sanches','smith','roberts'],'area':[4,7,8]})
df1.set_index('ID').join(df2.set_index('ID')).reset_index()
>>>
ID prop name size lst_name area
0 A x rob 2 sanches 4.0
1 B y sally 3 NaN NaN
2 C z debby 5 roberts 8.0
3 D w meg 6 smith 7.0