<p>您可以通过将personId上的数据帧合并在一起,进行筛选,然后计数来实现这一点。你知道吗</p>
<pre><code>df1 = pd.DataFrame([['a', '01/01/2016 13:30'],
['a', '01/02/2016 18:35'],
['b', '01/07/2016 12:15'],
['b', '01/08/2016 19:15']],
columns=['PersonId', 'EventDate'])
df1['EventDate'] = pd.to_datetime(df1['EventDate'])
df2 = pd.DataFrame([['a', '01/12/2015 15:15'],
['b', '07/12/2015 18:15'],
['b', '11/12/2015 14:05'],
['b', '01/01/2017 16:30']],
columns=['PersonId', 'EventDate'])
df2['EventDate'] = pd.to_datetime(df2['EventDate'])
df_temp = df1.merge(df2, on=["PersonId"], suffixes=("_event1", "_event2"))
df_temp = df_temp[df_temp.loc[:, 'EventDate_event1'] > df_temp.loc[:, 'EventDate_event2']]
df_temp = df_temp.groupby(['PersonId', 'EventDate_event1'], as_index=False).count()
print(df_temp)
</code></pre>
<p>得到</p>
<pre><code> PersonId EventDate_event1 EventDate_event2
0 a 2016-01-01 13:30:00 1
1 a 2016-01-02 18:35:00 1
2 b 2016-01-07 12:15:00 2
3 b 2016-01-08 19:15:00 2
</code></pre>