gpt4 book ai didi

python - 可以在仅选择右侧第一个匹配项的 Pandas 中执行左连接吗?

转载 作者:太空狗 更新时间:2023-10-29 19:26:41 25 4
gpt4 key购买 nike

能否在只选择右侧第一个匹配项的 pandas 中执行左连接?示例:

left            = pd.DataFrame()
left['age'] = [11, 12]
right = pd.DataFrame()
right['age'] = [10, 11, 11]
right['salary'] = [ 100, 150, 200 ]
left.merge( right, how='left', on='age' )

返回

   age  salary
0 11 150
1 11 200
2 12 NaN

但我想要的是保留 left 的行数,仅采用第一个匹配项。即:

   age  salary
0 11 150
2 12 NaN

所以我一直在用

left.merge( right.drop_duplicates(['age']), how='left', on='age')

但我相信这使一个完整的副本正确。它闻起来很有趣。

有没有更优雅的方式?

最佳答案

是的,您可以使用 groupby 删除重复的行。尽你所能来定义左和右。现在,我在你的最后一行定义了一个新的数据框:

left2=left.merge( right, how='left', on='age' )
df= left2.groupby(['age'])['salary'].first().reset_index()
df

一开始我用了一个.min(),它会给你每个年龄段的最低工资,这样:

df= left2.groupby(['age'])['salary'].min().reset_index()

但您是专门询问第一场比赛的。为此,您可以使用 .first() 选项。注意:末尾的 .reset_index() 只是将 groupby 的输出重新格式化为数据帧。

关于python - 可以在仅选择右侧第一个匹配项的 Pandas 中执行左连接吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26258996/

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