我有两个Dataframe:
旧的Dataframe将是一个固定的Dataframe;新东东-每天都在变化。
对于每个id,基于new琰df中age列的值,旧琰df中的age将被更新,并且每当有更新时计数器将递增1。如果年龄没有变化,则计数器和年龄列保持相同的值(无增量)
旧的(编辑,包括第5个id)
id age counter
1 12 0
2 15 0
3 22 0
4 19 0
5 11 0
新建\u df
id age
1 20
2 21
3 22
4 19
旧数据框的输出现在应该是:
旧数据框:
id age counter
1 20 1
2 21 1
3 22 0
4 19 0
5 11 0
到目前为止,我尝试了以下方法:
df_old = df_old.withColumnRenamed('id','id_old')\
.withColumnRenamed('age','age_old')
joinedDF = df_old.join(df_new, df_new["id"] == df_old["id_old"], "outer")
if(joinedDF.select(joinedDF.age_old != joinedDF.age)):
joinedDF = joinedDF.withColumn("age_old",joinedDF['age'])
joinedDF = joinedDF.withColumn("counter",joinedDF['counter']+1)
joinedDF[['id_old', 'age_old', 'counter']].toPandas()
id_old age_old counter
1 20 1
2 21 1
3 22 1
4 19 1
如果你能看到我得到的id\u old=3和4的输出,我应该得到0的计数器值,但是得到1。感谢您的帮助
1条答案
按热度按时间uyhoqukh1#
这样你才能达到同样的效果,
输出: