gpt4 book ai didi

python - Pandas 根据条件将列添加到具有另一行值的数据框

转载 作者:行者123 更新时间:2023-12-04 15:06:09 25 4
gpt4 key购买 nike

我有一个数据框,其中包含名为“id”、“x”、“y”和“time”的列

<表类="s-表"><头>id<次>次 x<日>是 <正文>101412113223125214221234306217318235322225

我想向数据框添加两列,以便它们具有来自具有相同 ID 和时间 + 2 的另一行的 x 和 y 的值

结果应该是这样的:

<表类="s-表"><头>id<次>次 x<日>是 x2y2<正文>10141252141132231252142212343062172225318235322225

请注意dataframe没有按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 列中的值来创建新数据框,然后是 left 合并这个新数据帧与id, time列上的原始数据帧以获得结果:

df_r = df.assign(time=df['time'].sub(2))
df.merge(df_r, on=['id', 'time'], how='left', suffixes=['', '2'])

   id  time   x   y    x2    y2
0 1 0 14 12 52.0 14.0
1 1 1 32 23 NaN NaN
2 1 2 52 14 NaN NaN
3 2 2 12 34 NaN NaN
4 3 0 62 17 22.0 25.0
5 3 1 82 35 NaN NaN
6 3 2 22 25 NaN NaN

关于python - Pandas 根据条件将列添加到具有另一行值的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66075585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com