나는 여러 고객으로부터 여러 송장을 포함하는 pandas.DataFrame
을 가지고 있습니다. 나는 고객에 따라 두 송장 사이의 시간을 계산하는 우아한 방법을 찾고 싶습니다.색인, 여러 송장의 시간 차이를 얻는 방법 - 팬더
CustomerID InvoiceDate time between 2 orders
index
536365 17850.0 2010-12-01 08:26:00 0 minutes (or np.nat)
536366 17850.0 2010-12-01 08:28:00 2 minutes
536367 13047.0 2010-12-01 08:34:00 0 minutes (It's a new customer)
536369 13047.0 2010-12-01 08:35:00 1 minute
536371 13748.0 2010-12-01 09:00:00 0 minute (new customer)
536372 17850.0 2010-12-01 09:01:00 33 minutes (see line #2)
536373 17850.0 2010-12-01 09:02:00 1 minute
536374 15100.0 2010-12-01 09:09:00 0 minute
이것은 내가 지금까지 발견 것입니다 (하지만 분명히 작동하지 않습니다 다음과 같이
내 데이터 프레임의 모양 (인덱스가 송장 번호입니다, 마지막 열은 내가 기대하고있는 무슨이다) !)
df = df.sort_values(['CustomerID', 'InvoiceDate']) #To order first according
df = df.set_index('index', drop = True)
for CustomerID in df['CustomerID'].unique():
index = df.set_index('CustomerID').index.get_loc(CustomerID)
df['Ordersep'].iloc[index] = df['InvoiceDate'].iloc[index].diff()
나에게 도움이 될만한 아이디어가 있습니까?
빙고! 이 솔루션을 보게되면 언제나 확실 해 보입니다. –