python - 检查 groupby 中的值是否存在于数据框中
问题描述
我正在使用 pandas,并且我有一个名为orders
. 它有 3 列 id
:user_id
和order_timestamp
。
我想做的第一步是返回groupby
user_id
并返回对应于最小 order_timestamp(id、user_id 和最小 order_timestamp)的整行。这告诉我哪些订单 ID 是“第一订单”。我们将其称为数据框。min
order_timestamp
first_orders
我想做的下一步是first_orders
与订单数据框进行比较,并创建一个不包括第一订单的新数据框。我们可以这样称呼non_first_orders
最有效的方法是什么?
orders
看起来像这样
id user_id order_timestamp
1 10 1/1/19
2 10 1/10/19
3 10 2/1/18
4 11 10/2/19
5 11 1/1/19
6 11 3/1/19
7 12 6/9/19
8 12 5/1/18
9 12 3/12/19
第一个订单应该看起来像这样 id user_id order_timestamp
3 10 2/1/18
5 11 1/1/19
8 12 5/1/19
最后,non_first_orders
应该是这样的
id user_id order_timestamp
1 10 1/1/19
2 10 1/10/19
4 11 10/2/19
6 11 3/1/19
7 12 6/9/19
9 12 3/12/19
解决方案
尝试:
idx = orders.groupby('user_id')['order_timestamp'].idxmin()
orders.loc[idx]
输出:
id user_id order_timestamp
2 3 10 2018-02-01
4 5 11 2019-01-01
7 8 12 2018-05-01
和,
non_first_orders = orders[~orders.index.isin(idx)]
non_first_orders
输出:
id user_id order_timestamp
0 1 10 2019-01-01
1 2 10 2019-01-10
3 4 11 2019-10-02
5 6 11 2019-03-01
6 7 12 2019-06-09
8 9 12 2019-03-12
推荐阅读
- sql - SQL查询匹配表1到表2
- css - 使用spring security和thymeleaf时无法加载我的css
- ios - 使用 HealthKit 结果填充 TableView - Swift
- javascript - 需要指导将 excel 修改为 JSON javascript 代码以每组数据输出一个 JSON
- sublimetext3 - 未注册的崇高文本
- java - 如何使用鼠标滚轮增加圆周内的圆的大小?
- android - 为 Android 编译 Unreal Engine AR 蓝牙模板时出现“致命错误:找不到‘initializer_list’文件”
- vb.net - 使用 Visual Basic 在条形菜单上添加 Itens 时出现问题
- sql - 如何为其他列中的每个值选择具有 5 个不同值的行?
- c++ - 在模板中使用与模板类相同类型的类型别名它自己