python - 基于特定值的具有最近日期的输出行
问题描述
我有一个 5 列的 DataFrame。我需要在代码、class_id 和最近日期上具有相同值的行。
code class_id grade date class_name
7 48 b 01/12/17 algebra
8 85 a 07/28/08 calculus
10 50 b 12/12/10 geometry
7 48 c 07/10/19 history
23 48 b 12/8/14 literature
8 85 d 01/01/2020 economics
输出
7 48 c 07/10/19 history
8 85 d 01/01/2020 economics
解决方案
将string
日期转换为datetime
对象,然后执行groupby
示例merge
代码
df['date1'] = pd.to_datetime(df['date'], format='%d/%M/%y', errors='coerce', exact=False)
df2 = df.groupby(['code', 'class_id']).agg({
'date1' : 'max',
'grade' : 'count'
}).reset_index()
df2 = df2[df2['grade'] > 1].drop(columns=['grade'])
df2.merge(df, how='left', on=['code', 'class_id', 'date1'])
上面代码的输出如下
code class_id date1 grade date class_name
0 7 48 2019-01-07 00:10:00 c 07/10/19 history
1 8 85 2020-01-01 00:01:00 d 01/01/2020 economics
推荐阅读
- php - EntityManager 不使用 psr-4 命名空间加载存储库
- rust - 如何仅使用 rustc 而不是 cargo 链接动态 Rust 库?
- typescript - 在 VS Code 中保存时格式化 *.tsx 文件
- python - Boost Python 2:使用`std::string &`的构造函数
- angularjs - 在量角器测试用例中从 ng-repeat 中获取价值
- sql-server - 使用 T-SQL 更新语句进行哈希计算生成 32 位长度
- javascript - 为什么变量更改需要延迟 x 毫秒才能生效?
- html - 我的代码中的 col-md-4 类格式不正确
- hadoop - Sqoop 导入后 Hive 表中的空格而不是 NULL
- javascript - 如何在页面加载时打开手风琴选项卡