<p>这里有另一个使用左连接和一些重命名的选项</p>
<pre><code> # find rows where progrNumber is 1
df_prog1=df[df.progrNumber==1]
# do a left join on the original
df=df.merge(df_prog1,on='uniqueIdentity',how='left',suffixes=('','_y'))
# keep only the beginTime from the right frame
df=df[['uniqueIdentity','beginTime_y','progrNumber']]
# rename columns
df=df.rename(columns={'beginTime_y':'beginTime'})
print(df)
</code></pre>
<p>结果:</p>
<pre><code> uniqueIdentity beginTime progrNumber
0 2018-02-07-6253554 17:40:29 1
1 2018-02-07-6253554 17:40:29 2
2 2018-02-07-6253554 17:40:29 3
3 2018-02-07-6253554 17:40:29 4
4 2018-02-07-5555333 17:48:29 1
5 2018-02-07-5555333 17:48:29 2
6 2018-02-07-5555333 17:48:29 3
7 2018-02-07-5555333 17:48:29 4
8 2018-02-07-2345622 18:40:29 1
9 2018-02-07-2345622 18:40:29 2
10 2018-02-07-2345622 18:40:29 3
11 2018-02-07-2345622 18:40:29 4
</code></pre>
<p><strong>如果不确定<code>uniqueIdentity</code>内的哪个记录的时间最短,可以使用<code>groupby</code>而不是选择<code>progrNumber==1</code>的位置:</p>
<pre><code> df_prog1=df.groupby('uniqueIdentity')['beginTime'].min().reset_index()
</code></pre>
<p>并按上述方法进行左连接</p>