gpt4 book ai didi

python - Pandas :合并(内部连接)数据框的行数比原来的多

转载 作者:太空狗 更新时间:2023-10-29 17:33:22 24 4
gpt4 key购买 nike

我在 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。知道我在这里错过了什么吗?

最佳答案

因为您在两个数据集中都有重复的合并列,您将获得具有该合并列值的 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 :合并(内部连接)数据框的行数比原来的多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41580249/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com