gpt4 book ai didi

python - 不确定如何根据条件合并数据

转载 作者:行者123 更新时间:2023-11-28 22:17:18 24 4
gpt4 key购买 nike

df1:

tID  sID  dID  date1 date2
1234 4321 5432 7/12 8/13
7890 5688 4567 8/21 9/30

df2:

sID  dID  date3 
4321 5432 7/20
5688 4567 9/15

如果满足以下条件,我想将 tID 分配给 df2:

  • date3date1date2 之间
  • sID 相同
  • dID 相同

df3:

tID  sID  dID  date3 
1234 4321 5432 7/20
7890 5688 4567 9/15

我的第一个想法是遍历两个数据帧并使用 if 语句,但这看起来确实不是一种有效的方法。

任何帮助将不胜感激。

最佳答案

IIUC,首先将它们设置为相同的索引(如str,如果ID在编辑之前可能包含诸如8/21的id。如果所有id都是int ,无需执行 astype 步骤)

df['sID'] = df.sID.astype(str)
df['dID'] = df.dID.astype(str)
df = df.set_index(['sID', 'dID'])


df2['sID'] = df2.sID.astype(str)
df2['dID'] = df2.dID.astype(str)
df2 = df2.set_index(['sID', 'dID'])

然后使用loc进行过滤和赋值

m = df2.index.isin(df.index)
sub = df.loc[df2[m].date3.index]
s = df2[m].date3.between(sub.date1, sub.date2)
df2.loc[:, 'tID'] = df.loc[s[s].index, 'tID']

输出

                date3   tID
sID dID
4321 5432 7/20 1234
5688 4567 9/15 7890

关于python - 不确定如何根据条件合并数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51507975/

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