我的数据(df)如下所示:
Date | Name | Plan |
---|---|---|
2022 | John | College |
2022 | John | Work |
2021 | Kel | College |
2022 | James | Work |
2019 | Daron | College |
2019 | JQ | NaN |
2020 | Mel | College |
2017 | Shama | Work |
2021 | John | Nan |
2020 | John | Work |
2021 | Mel | Work |
2018 | Shama | Work |
我的最终结果需要一个计划(最近的一个),每个名字.
当前I:删除所有Plan NaN值,然后按服务日期排序,并使用以下代码删除除最近日期之外的所有日期:
df = df.dropna(subset=['Plan'])
df = df.sort_values('Date').drop_duplicates('Name', keep='last')
这基本上是可行的,但我需要"大学"优先于"工作",当两者在同一天放在一起.在上面的数据中,这一行:| 2022 | John | Work |将是防止删除重复项的行,而不是带有"College"的行.
一切都正常,除了这一小部分,日期是重复的,有两个不同的计划.
在一个没有Pandas 的环境中,我会这样想:
如果服务日期重复,其中一个==大学,另一个==任何其他日期:
我需要的最终结果是:
Date | Name | Plan |
---|---|---|
2022 | John | College |
2021 | Kel | College |
2022 | James | Work |
2019 | Daron | College |
2019 | JQ | NaN |
2021 | Mel | Work |
2018 | Shama | Work |
如果有道理,请告诉我,