在两个条件下比较来自两个不同数据框架的两列



这里的上下文是比较两个列的值——键和日期。如果满足条件,我们现在将创建一个新列,标记为= Y else ">

条件:如果关键字匹配并且日期在df1>日期在2008年,然后";Y"其他">

因此,我们将遍历df1中的所有行,看看键是否与df2中的键匹配,此时我们将检查该行的dateF和date,看看它是否更大,如果是,我们将保存"在新的列标志中。

更新1:在df1中可以有多行具有相同的键和不同的日期

Df1:

<表类> 键 日期 另一个 tbody><<tr>1232022-03-04苹果3212022-05-01红2342022-07-08绿色

您可以使用pandas.Series.gt比较两个日期pandas.DataFrame.loc使用布尔掩码创建新列并同时标记它。

df1.loc[df1['Date'].gt(df2['Date']), "Flag"]= "Y"

#输出:

print(df1)
Key       Date Another Flag
0  123 2022-03-04   Apple    Y
1  321 2022-05-01     Red  NaN
2  234 2022-07-08   Green    Y

如果你的数据帧大小不同,你可以使用merge:

final=df1.merge(df2,left_on='Key',right_on='Key',how='left')
final.loc[final['DateF'] > final['Date'], "Flag"]="Y"
final=final.drop(['Date'],axis=1)
Key DateF   Another Flag
0   123 2022-03-04  Apple   Y
1   321 2022-05-01  Red 
2   234 2022-07-08  Green   Y

这段代码没有答案那么优雅,但它也可以工作:

ref_dates   = dict(zip(df2.Key,df2.Date))
df1['Flag'] = ['Y' if date>ref_dates.get(key,'0000-00-00') else '' for key,date in zip(df1.Key,df1.DateF)]

我们首先用df2中的日期创建一个字典(ref_dates),然后遍历df1,将它们与DateF进行比较。

相关内容

  • 没有找到相关文章

最新更新