我需要帮助来解决以下问题:
我有两个(2)大小不同的数据帧。我需要比较这些值,如果满足条件,请替换数据框1中的值。
如果数据框1中的Material和Char值= =“ Y”,则需要从数据框2中获取“ Required或Optional”值。如果需要,则将“ Y”替换为“ Y_REQD”否则,如果是可选的,则将“ Y”替换为“ Y_OPT”。
我一直在使用For循环,但是现在代码变得太复杂了,这提示我这可能不是最好的方法。
谢谢。
答案 0 :(得分:0)
这更像是一个pivot
问题,然后我们可以reindex
数据帧然后求和
df1=df1.replace({'Y':'Y_'})+df2.pivot(*df2.columns).reindex_like(df1).fillna('')
答案 1 :(得分:0)
大多同意@WeNYoBen的回答。但是要使其完全正确,需要使用df.replace修改dataframe2。
简短版本:
this.createForm.patchValue({
firstInput:null,
secondInput:null,
thirdInput:null,
})
长版:
df1=df1.replace({'Y':'Y_'})+df2.replace({'Rqd': 'REQD', 'Opt': 'OPT'}).pivot(*df2.columns).reindex_like(df1).fillna('')
希望有帮助。