我有一个数据框,其中的列名为“id”、“x”、“y”和“time”
我想向dataframe添加两列,以便它们的值为x和y,来自具有相同id和时间+2的另一行
结果应该是这样的:
请注意,数据帧不是按id排序的
我为x2尝试了以下方法,但效果不理想:
t=2
data['x2'] = data.apply(lambda x: x['x'] if (data[(data['id']==x['id']) & ((data['time']+t) == x['time'])].size > 0) else '', axis=1)
下面的方法很有效,但我需要使用一种快捷方式和一种性能最好的方法,因为我的数据量很大
t=2
for index, row in data.iterrows():
rowT = data[(data['id']==row['id']) & (data['time'] == (row['time'] + t))]
if rowT.size > 0:
data.loc[index,'x2'] = rowT['x'].values[0]
您可以通过使用
t-2
秒处的值重新填充time
列中的值来创建新的数据帧,然后使用id, time
列上的原始数据帧来创建此新数据帧以获得结果:每个id内的查找时间+2
相关问题 更多 >
编程相关推荐