当前位置:  开发笔记 > 编程语言 > 正文

pandas:merged(内连接)数据框的行数多于原始数据

如何解决《pandas:merged(内连接)数据框的行数多于原始数据》经验,为你挑选了1个好方法。

我在Jupyter Notebook上使用python 3.4,尝试合并两个数据框,如下所示:

df_A.shape
(204479, 2)

df_B.shape
(178, 3)

new_df = pd.merge(df_A, df_B,  how='inner', on='my_icon_number')
new_df.shape
(266788, 4)

我认为new_df合并上面应该有几行,df_A因为合并就像一个内连接.但为什么new_df这里实际上有更多行df_A

这是我真正想要的:

我的意思df_A是:

 id           my_icon_number
-----------------------------
 A1             123             
 B1             234
 C1             123
 D1             235
 E1             235
 F1             400

我的意思df_B是:

my_icon_number    color      size
-------------------------------------
  123              blue      small
  234              red       large 
  235              yellow    medium

然后我想new_df成为:

 id           my_icon_number     color       size
--------------------------------------------------
 A1             123              blue        small
 B1             234              red         large
 C1             123              blue        small
 D1             235              yellow      medium
 E1             235              yellow      medium

我真的不想删除df_A中my_icon_number的重复项.知道我错过了什么吗?



1> piRSquared..:

因为在两个数据集中都有重复的合并列,所以您将获得k * m具有该合并列值k的行,其中是数据集1 m中具有该值的行数,并且是数据集2中具有该值的行数.

尝试 drop_duplicates

dfa = df_A.drop_duplicates(subset=['my_icon_number'])
dfb = df_B.drop_duplicates(subset=['my_icon_number'])

new_df = pd.merge(dfa, dfb, how='inner', on='my_icon_number')

在这个例子中,唯一的共同点是,4但我在每个数据集中有3次.这意味着我应该在生成的合并中获得总共9行,每个组合一行.

df_A = pd.DataFrame(dict(my_icon_number=[1, 2, 3, 4, 4, 4], other_column1=range(6)))
df_B = pd.DataFrame(dict(my_icon_number=[4, 4, 4, 5, 6, 7], other_column2=range(6)))

pd.merge(df_A, df_B,  how='inner', on='my_icon_number')

   my_icon_number  other_column1  other_column2
0               4              3              0
1               4              3              1
2               4              3              2
3               4              4              0
4               4              4              1
5               4              4              2
6               4              5              0
7               4              5              1
8               4              5              2

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有