擅长:python、mysql、java
<p>每个id内的查找时间+2</p>
<pre><code>id=[1,1,1,2,3,3,3]
time=[0,1,2,2,0,1,2]
x=[14,32,52,12,62,82,22]
y=[12,23,14,34,17,35,25]
df=pd.DataFrame({'id':id,'time':time,'x':x,'y':y})
df.reset_index()
df['x2']=0
df['y2']=0
for key,item in df.iterrows():
lookup=(item['time']+2)
filter=(df['time']==lookup) & (df['id']==item['id'])
results=df[filter]
if len(results)>0:
row=results.iloc[0]
x2=row.x
y2=row.y
df.loc[key,['x2','y2']]=(x2,y2)
print(df)
output:
id time x y x2 y2
0 1 0 14 12 52 14
1 1 1 32 23 0 0
2 1 2 52 14 0 0
3 2 2 12 34 0 0
4 3 0 62 17 22 25
5 3 1 82 35 0 0
6 3 2 22 25 0 0
#no looping
df2=df.copy()
df2['time'] = df2.apply(lambda x: x['time']+2, axis=1)
results=df2[['id','time','x','y']].merge(df[['id','time','x','y']]
,on=['id','time'],how="left",suffixes=('', '2')).fillna(0)
print(results)
</code></pre>