如果我有以下pandas数据框
| 用户ID|登录日期|PlacedOrderItems|其他栏目|
| --------------|--------------|--------------|--------------|
| 小行星A123456|2023-04-01 2023-04-01|1|一种|
| 小行星A123456|2023-04-10 2023-04-10 2023-04-10|0|B|
| B123456|2023-04-05 2023-04-05 2023-04-05|0|c|
| B123456|2023-04-06 2023-04-06|二|d|
| B123456|2023-04-07 2023-04-07|0|e|
我想使用group by UserID
,并将min
的LoginDate
和max
的PlacedOrderItems
添加到我的datafarme的每一行。我尝试了Group by,但将列名变成了一个奇怪的多级索引。
但是我想要的是像下面这样的东西,我保留了原始的 Dataframe ,只是添加了两个新的列。
| 用户ID|登录日期|PlacedOrderItems|其他栏目|最小登录日期|最大订购项|
| --------------|--------------|--------------|--------------|--------------|--------------|
| 小行星A123456|2023-04-01 2023-04-01|1|一种|2023-04-01 2023-04-01|1|
| 小行星A123456|2023-04-10 2023-04-10 2023-04-10|0|B|2023-04-01 2023-04-01|1|
| B123456|2023-04-05 2023-04-05 2023-04-05|0|c|2023-04-05 2023-04-05 2023-04-05|二|
| B123456|2023-04-06 2023-04-06|二|d|2023-04-05 2023-04-05 2023-04-05|二|
| B123456|2023-04-07 2023-04-07|1|e|2023-04-05 2023-04-05 2023-04-05|二|
2条答案
按热度按时间ee7vknir1#
方法1:转换为聚合和广播值
方法2:进行命名聚合,然后合并回来
ogsagwnx2#
你可以通过使用groupby()方法和transform()方法创建两个新列来实现这一点:min_login_date和max_order_items: