我正在Jupyter笔记本上使用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如下:
 id           my_icon_number
-----------------------------
 A1             123
 B1             234
 C1             123
 D1             235
 E1             235
 F1             400

我的df_A是这样的:
my_icon_number    color      size
-------------------------------------
  123              blue      small
  234              red       large
  235              yellow    medium

那么,我希望df_B是:
 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中的_icon_编号的副本。知道我在这里遗漏了什么吗?

最佳答案

因为两个数据集中都有合并列的重复项,所以将得到具有该合并列值的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

关于python - pandas:merged(内连接)数据框的行数多于原始数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41580249/

10-15 04:14
查看更多