思路
- 先按需要取最大的数据进行倒序排序
- 去重并保留第一行,重复的检查列,就是用于分组的列
示例
数据
user_id |
product_id |
price |
date |
product_name |
1 |
1 |
12 |
2022-12-01 |
A |
1 |
1 |
15 |
2022-11-11 |
A |
2 |
1 |
15 |
2022-11-35 |
A |
2 |
1 |
13 |
2022-12-01 |
A |
要求
取出用户购买各种商品最近一天,购买最便宜的购买记录
即:用户和商品最后一次记录,如果同一天购买了相同商品多次取最便宜的一次
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# df_org
# user_id product_id price date product_name
# 0 1 1 12 2022-12-01 A
# 1 1 1 15 2022-11-11 A
# 2 2 1 15 2022-11-35 A
# 3 2 1 13 2022-12-01 A
# 对想排序的列排序
df = df_org.sort_values(by=['date', 'price'], ascending = [False, True])
# user_id product_id price date product_name
# 0 1 1 12 2022-12-01 A
# 1 2 1 13 2022-12-01 A
# 3 2 1 15 2022-11-35 A
# 2 1 1 15 2022-11-11 A
# 对想去重的列进行去重,保留第一个
df.drop_duplicates(subset=['user_id', 'product_id'], keep='first')
# user_id product_id price date product_name
# 0 1 1 12 2022-12-01 A
# 1 2 1 13 2022-12-01 A
|
结果
user_id |
product_id |
price |
date |
product_name |
1 |
1 |
12 |
2022-12-01 |
A |
2 |
1 |
13 |
2022-12-01 |
A |