<p>我很肯定会有一个更全面的方法,从而缩短代码。但如果没有更多的答案,你可以用这个:</p>
<pre><code>import pandas as pd
import datetime
#Read data
df1 = pd.read_csv('df1.csv')
df2 = pd.read_csv('df2.csv')
#Format Datetime column
df1['datetime'] = df1['datetime'].apply(lambda x: datetime.datetime.strptime(x, '%m/%d/%Y'))
df2['datetime'] = df2['datetime'].apply(lambda x: datetime.datetime.strptime(x, '%m/%d/%Y'))
#Get min datetime in df2 for each id
min(list(df2[df2['userid']=='AB-4243']['datetime']))
temp = pd.DataFrame(list(set(df2['userid'])))
temp.columns = ['userid']
temp['min_datetime'] = temp['userid'].apply(lambda x: min(list(df2[df2['userid']==x]['datetime'])))
temp
#Merge in
df1 = df1.merge(temp, on='userid')
#Slicing
result = df1[df1['datetime'] >= df1['min_datetime']]
</code></pre>
<p>结果是:</p>
<pre><code>df1[df1['datetime'] >= df1['min_datetime']]
Out[65]:
userid datetime Score min_datetime
5 AB-4243 2016-02-06 76.00 2016-02-06
6 AB-4243 2016-02-07 84.00 2016-02-06
7 AB-4243 2016-02-08 84.00 2016-02-06
8 AB-4243 2016-02-09 81.00 2016-02-06
9 AB-4243 2016-02-10 79.00 2016-02-06
10 NP-7585 2016-02-01 22.00 2016-02-01
11 NP-7585 2016-02-02 23.50 2016-02-01
12 NP-7585 2016-02-03 30.15 2016-02-01
13 NP-7585 2016-02-04 30.15 2016-02-01
14 NP-7585 2016-02-05 30.15 2016-02-01
15 NP-7585 2016-02-06 30.15 2016-02-01
16 NP-7585 2016-02-07 0.00 2016-02-01
17 NP-7585 2016-02-08 0.00 2016-02-01
18 NP-7585 2016-02-09 22.50 2016-02-01
19 NP-7585 2016-02-10 45.67 2016-02-01
29 VX-4376 2016-02-10 33.13 2016-02-10
</code></pre>