我需要使用customer
进行.groupby()
,然后为客户首次购买的日期添加一列,并添加另一列对应的购买金额。
这是我的代码。我做错了第一部分,不知道如何做第二部分。我尝试过 .loc
和 .idxmin
....
mydata = [{'amount': 3200, 'close_date':'2013-03-31', 'customer': 'Customer 1',},
{'amount': 1430, 'close_date':'2013-11-30', 'customer': 'Customer 1',},
{'amount': 4320, 'close_date':'2014-03-31', 'customer': 'Customer 2',},
{'amount': 2340, 'close_date':'2015-05-18', 'customer': 'Customer 2',},
{'amount': 4320, 'close_date':'2015-06-29', 'customer': 'Customer 2',},]
df = pd.DataFrame(mydata)
df.close_date = pd.to_datetime(df.close_date)
df['first_date'] = df.groupby('customer')['close_date'].min().apply(lambda x: x.strftime('%Y-%m'))
最佳答案
如果您按 close_date
对数据进行排序,则可以执行以下操作:
df.sort_values('close_date').groupby(['customer'])['close_date', 'amount'].first()
close_date amount
customer
Customer 1 2013-03-31 3200
Customer 2 2014-03-31 4320
.sort_values()
已在 0.17
中添加,原为 sort()
(see docs) .
关于python - 按一列对数据进行分组,并从其他两列中选择第一次出现的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34404712/