[英]Check if values in a groupby exists in a dataframe
我正在使用熊猫,我有一个名为orders
的数据框。 它有 3 列: id
、 user_id
和order_timestamp
。
第一步我想这样做是为了groupby
user_id
并返回min
的order_timestamp
并返回整个行对应于分钟order_timestamp(ID,USER_ID和最小order_timestamp)。 这告诉我哪个订单 ID 是“第一订单”。 我们将其称为first_orders
数据帧。
我想做的下一步是将first_orders
与订单数据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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.