合并数据帧中的额外行pandas

2024-10-02 12:24:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图合并两个数据帧。框架不共享列(除了键)。所以合并应该只将右边的列添加到左边。但是,我也得到了额外的行。我不明白那两排是从哪里来的。在

如果我使用左_索引和右_索引,那么它就可以完美地工作了。但是,我不明白在键上的普通合并会像我的结果中那样有两个额外的行。谢谢

dat1 = np.array([['Afghanistan', 2007, 'new_ep_m1524', 0],['Afghanistan', 2007, 'new_sn_m65', 0],
              ['Afghanistan', 2012, 'new_sn_f014', 1190],['Afghanistan', 2011, 'new_sn_f014', 851],
              ['Afghanistan', 2013, 'newrel_m014', 1705]], dtype=object)

dat2 = np.array([['ep', 'male', '15-24', 'Afghanistan', 2007],['sn', 'male', '65+', 'Afghanistan', 2007],
              ['sn', 'female', '0-14', 'Afghanistan', 2012],['sn', 'female', '0-14', 'Afghanistan', 2011],
              ['rel', 'male', '0-14', 'Afghanistan', 2013]], dtype=object)

left = pd.DataFrame(data=dat1, columns=['country', 'year', 'case_type', 'count'] ) 

rigt = pd.DataFrame(data=dat2, columns=['type', 'gender', 'age_group', 'country', 'year'])


display(left), display(right) 
pd.merge(left,right, on=['country', 'year'], how='outer')

enter image description here

对吧 enter image description here

结果 enter image description here


Tags: newobjectnparrayleftyearcountrymale
2条回答

您的数据集中有重复的键。Afghanistan 2007在每个数据帧中有两行。使用完整的外部联接合并时,不清楚两个记录Afghanistan 2007中哪一个应在两个数据帧之间匹配。所以,两者都是结合在一起的。这就是为什么在合并的数据帧中有四个带有Afghanistan 2007的记录(来自第一个数据帧的2个+来自第二个数据帧的2个)。在

合并在列year上,它不是每行都唯一的。在

合并将左dataframe的行0与右dataframe的行0和1相关联,将左dataframe的行1与右dataframe的行0和1相关联。在

为了避免您可以删除案例类型或根据需要添加唯一的id。在

相关问题 更多 >

    热门问题