我有一個如下所示的資料框:
trip_id date journey_duration weekday
0 913460 2019-08-31 00:13:00 Sat
1 913459 2019-08-31 00:17:00 Sat
2 913455 2019-08-31 00:05:00 Sat
3 913454 2019-08-31 00:07:00 Sat
4 913453 2019-08-31 00:13:00 Sat
5 913452 2019-08-31 00:05:00 Sat
6 913451 2019-08-31 00:15:00 Sat
7 913450 2019-08-31 00:04:00 Sat
8 913449 2019-08-31 00:03:00 Sat
9 913448 2019-08-31 00:15:00 Sat
10 913443 2019-08-31 00:12:00 Sat
11 913442 2019-08-31 00:10:00 Sat
12 913441 2019-08-31 00:07:00 Sat
13 913440 2019-08-31 00:05:00 Sat
14 913435 2019-08-31 00:08:00 Sat
15 913434 2019-08-31 00:05:00 Sat
16 913433 2019-08-31 00:03:00 Sat
17 913432 2019-08-31 00:12:00 Sat
18 913431 2019-08-31 00:10:00 Sat
19 913429 2019-08-31 00:15:00 Sat
我想將其匯總到每日級別 - 將 trip_id 列更改為每天的旅行次數,并將旅程持續時間更改為每天的平均值
我用過這個:
trip_data = (pd.to_datetime(trip_data['date'])
.dt.floor('d')
.value_counts()
.rename_axis('date')
.reset_index(name='count'))
這可以很好地計算每天的行程,但這會降低行程持續時間
希望這是有道理的,意識到我的命名法可能不存在,因為我是新手
謝謝
uj5u.com熱心網友回復:
這是一種解決您的問題的方法:
trip_data.date = pd.to_datetime(trip_data.date)
trip_data.journey_duration = pd.to_timedelta(trip_data.journey_duration)
trip_data = ( trip_data
.assign(date=trip_data.date.dt.floor('d'))
.groupby('date', as_index=False)
.agg(count=("trip_id", "count"), journey_duration=("journey_duration", "mean")) )
輸出:
date count journey_duration
0 2019-08-31 20 0 days 00:09:12
解釋:
- 確保
date是熊貓日期時間并且journey_duration是熊貓時間增量型別 - 使用
date_floor() - 用于
groupby()準備通過唯一的聚合date - 用于在名為和using的列
agg()中聚合trip_idusing 。countcountjourney_durationmean
uj5u.com熱心網友回復:
首先,將date和轉換journey_duration為日期時間物件。由于journey_duration不包含日期、月份等,因此將pd.to_timedelta其用于轉換可能是一個更好的主意:
df['date'] = pd.to_datetime(df['date'])
df['journey_duration'] = pd.to_timedelta(df['journey_duration'])
然后設定date為索引并將資料幀轉換為每日頻率并agg用于不同列的多個操作:
df.set_index('date').resample('D').agg(no_trips_per_day=('trip_id', 'count'), \
avg_duration=('journey_duration', 'mean'))
no_trips_per_day avg_duration
date
2019-08-31 20 0 days 00:09:12
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/510316.html
標籤:Python熊猫日期
