<p>如果我答对了问题,您希望从事件中获取行程起点和终点,第一个事件对应于起点(路线名称),然后计算数据集中具有相同起点和终点的车票数量</p>
<p>如果是这样,您可以按如下方式执行此操作</p>
<pre><code># srot the dataframe so you can use first/last
df_sorted= df.sort_values(['cardNumber', 'Date']).reset_index(drop=True)
# calculate the counts do the counts, but only
# from the defined types
indexer_trip_points= df_sorted['type'].isin(['transfer'])
df_from_to= df_sorted[indexer_trip_points].groupby('cardNumber').agg(
start_date=('Date', 'first'),
trip_start=('routeName', 'first'),
trip_end=('routeName', 'last'),
)
df_from_to['start_date']= df_from_to['start_date'].dt.date
df_counts= df_from_to.groupby(['trip_start', 'trip_end', 'start_date']).agg(
count=('trip_start', 'count')
)
df_counts.reset_index(drop=False, inplace=True)
df_counts.groupby(['trip_start', 'trip_end']).agg(
avg=('count', 'mean')
)
</code></pre>
<p>这导致:</p>
<pre><code> avg
trip_start trip_end
2 1 1
3 3 1
</code></pre>
<p>正如您所注意到的,最后一个条目具有相同的起点和终点。所以你可能需要过滤掉那些你还没有完整数据的旅行。例如,如果在您的情况下,一条路由永远不能以它开始时的相同routeName结束,您可以通过比较两列来简单地过滤它们</p>