热线电话:13121318867

登录
2019-01-24 阅读量: 1989
pandas合并数据长度?

我有两个数据框,每个数据框有一个列具有相同的值(和相等的长度)但是顺序不同,如简化示例;

df1=pd.DataFrame(['a','b','c','d','e'],columns=['names'])

df2=pd.DataFrame(['b','e','a','c','d'],columns=['names'])

我想知道df2中df1中每行的相应索引和do;

df= pd.merge(df1.reset_index(), df2.reset_index(), on=['names'])

这是有效的,并且正如本例所预期的那样,数据帧的长度是相等的 len(df1)=len(df2)=len(df)

但是在我的实际数据中,len(df1)= len(df2)= 1714和len(df)= 1676

我很困惑,这怎么可能?

我刚做了一个实验并添加了重复项。

df1=pd.DataFrame(['e','a','b','c','d','e'],columns=['names'])

df2=pd.DataFrame(['b','e','a','e','c','d'],columns=['names'])

df= pd.merge(df1.reset_index(), df2.reset_index(), on=['names'])

这使得len(df)= 8大于len(df1)= len(df2)= 6。

但在我的实际数据中,df小于单个df长度。

0.0000
2
关注作者
收藏
评论(1)

发表评论
啊啊啊啊啊吖
2019-01-24

原来是由于pandas merge默认为内连接,因此当您不特定方法时how,它只会在两个dfs中输出该行

例如 :

df1=pd.DataFrame(['a'],columns=['names'])

df2=pd.DataFrame(['b','e','a','c','d'],columns=['names'])

pd.merge(df1.reset_index(), df2.reset_index(), on=['names'])

index_x names index_y

0 0 a 2

df1=pd.DataFrame(['a','a'],columns=['names'])

df2=pd.DataFrame(['b','e','a','a','c','d'],columns=['names'])

df1.merge(df2)

names

0 a

1 a

2 a

3 a

0.0000 0 0 回复
推荐帖子
条评论