gpt4 book ai didi

python Pandas : How to choose a certain option within duplicates

转载 作者:行者123 更新时间:2023-12-05 05:37:47 25 4
gpt4 key购买 nike

我的数据 (df) 如下所示:

<表类="s-表"><头><日>日期 姓名计划<正文>2022约翰大专2022约翰工作2021凯尔大专2022詹姆斯工作2019达隆大专2019JQNaN2020梅尔大专2017莎玛工作2021约翰南2020约翰工作2021梅尔工作2018莎玛工作

我的最终结果需要一个计划(最近的一个),每个名字。

目前我:删除所有 Plan NaN 值,然后按服务日期排序,并使用以下代码删除除最近日期以外的所有值:

df = df.dropna(subset=['Plan'])
df = df.sort_values('Date').drop_duplicates('Name', keep='last')

这主要是可行的,但当两者在同一日期放在一起时,我需要“大学”优先于“工作”。在上面的数据中,这一行:| 2022 | 年约翰|工作|将是避免删除重复项的那个,而不是带有“学院”的那个。

一切正常,除了日期重复且有两个不同计划的这一小部分。

在非 pandas 环境中,我会这样想:

如果服务日期重复且一个 == 学院和其他 == 其他任何内容:然后保留大学的那个

我需要的最终结果:

<表类="s-表"><头><日>日期 姓名计划<正文>2022约翰大专2021凯尔大专2022詹姆斯工作2019达隆大专2019JQNaN2021梅尔工作2018莎玛工作

让我知道这是否有意义,谢谢!

最佳答案

您可以对“计划”使用自定义排序,其中您将“大学”优先于“工作”。这里利用订购Categorical ,但您也可以使用字典中的映射:

(df
.assign(cat=pd.Categorical(df['Plan'], categories=['Work', 'College'],
ordered=True))
.sort_values(by=['Date', 'cat'], na_position='first')
.drop(columns='cat')
.groupby('Name', as_index=False).last()
)

输出:

    Name  Date     Plan
0 Daron 2019 College
1 JQ 2019 None
2 James 2022 Work
3 John 2022 College
4 Kel 2021 College
5 Mel 2021 Work
6 Shama 2018 Work

关于 python Pandas : How to choose a certain option within duplicates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73052914/

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