vlookup使用熊猫而无需重复

发布于 2025-02-04 06:22:56 字数 642 浏览 1 评论 0原文

我有两个DataFrames DF1和DF2。如何使用PD.Merge或任何其他功能获得DF3?

我尝试了什么?

df3 = df1.merge(df2,on ='a',how ='left')

这给了我df3,其行数与df2相同。但是,我想要的是DF1和DF3中的行数是相同的。 DF3应与提供的示例完全相同。

DF1

A   B
1   1
2   1
3   2
4   2
5   3
6   7
7   1
8   1
9   9
10  3

DF2

A   C
1   XY
1   XY
2   XY
2   XY
2   XY
3   XY
3   XY
4   XY
4   XY
5   XY
5   XY
6   AB
6   AB
7   AB
8   AB
9   AB
9   AB
9   AB
10  MN
10  MN

DF3

A   B   C
1   1   XY
2   1   XY
3   2   XY
4   2   XY
5   3   XY
6   7   AB
7   1   AB
8   1   AB
9   9   AB
10  3   MN

I have two dataframes df1 and df2. How do I obtain df3 using pd.merge or any other function?

What I tried?

df3=df1.merge(df2, on='A', how='left')

This gives me df3 with number of rows same as df2. But, what I want is number of rows in df1 and df3 are same. df3 should look exactly as in the example provided.

df1

A   B
1   1
2   1
3   2
4   2
5   3
6   7
7   1
8   1
9   9
10  3

df2

A   C
1   XY
1   XY
2   XY
2   XY
2   XY
3   XY
3   XY
4   XY
4   XY
5   XY
5   XY
6   AB
6   AB
7   AB
8   AB
9   AB
9   AB
9   AB
10  MN
10  MN

df3

A   B   C
1   1   XY
2   1   XY
3   2   XY
4   2   XY
5   3   XY
6   7   AB
7   1   AB
8   1   AB
9   9   AB
10  3   MN

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

哭泣的笑容 2025-02-11 06:22:56

使用drop_duplicates保留一个实例(a,b)

>>> df1.merge(df2, on='A', how='left').drop_duplicates(['A', 'B'], ignore_index=True)
     A  B   C
0    1  1  XY
2    2  1  XY
5    3  2  XY
7    4  2  XY
9    5  3  XY
11   6  7  AB
13   7  1  AB
14   8  1  AB
15   9  9  AB
18  10  3  MN

Use drop_duplicates to keep one instance of (A, B):

>>> df1.merge(df2, on='A', how='left').drop_duplicates(['A', 'B'], ignore_index=True)
     A  B   C
0    1  1  XY
2    2  1  XY
5    3  2  XY
7    4  2  XY
9    5  3  XY
11   6  7  AB
13   7  1  AB
14   8  1  AB
15   9  9  AB
18  10  3  MN
他夏了夏天 2025-02-11 06:22:56

地图也工作

# map df2.C to df1.A via df2.A
df1["C"] = df1.A.map(df2.drop_duplicates().set_index('A').C)
df1

“在此处输入图像描述”

map works too

# map df2.C to df1.A via df2.A
df1["C"] = df1.A.map(df2.drop_duplicates().set_index('A').C)
df1

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文