繁体   English   中英

检查数据框中是否存在 groupby 中的值

[英]Check if values in a groupby exists in a dataframe

我正在使用熊猫,我有一个名为orders的数据框。 它有 3 列: iduser_idorder_timestamp

第一步我想这样做是为了groupby user_id并返回minorder_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM