我需要.groupby()
使用customer
,然後爲客戶進行首次購買的日期添加一列,併爲相應的購買添加另一列量。將數據按一列分組,然後從其他兩列中選擇第一個出現
這是我的代碼。我做的第一部分是錯的,不知道如何做第二部分。我試過.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'))
groupby語句的結果是另一個有兩列的數據框 - 「customer」和第一個日期。您不能將其分配給原始數據框的列。您是否嘗試創建一個新的數據框,其中包含有關每位客戶的信息以及他們的首次購買和購買金額?或者您是否試圖將該信息添加到原始數據框? – LateCoder
對不起,它實際上是一個Series對象,而不是一個數據框。 – LateCoder
LaterCoder,我試圖添加幾列到原始數據框,但我可以做一個單獨的DF。基本上,我試圖找到第一個購買日期和當天的購買金額。我需要的只是一個包含該信息的數據框,而不管它是否是原始信息。謝謝! –