我有2个具有相同列名的数据框。我想比较所有行。
我想比较df1中的所有参数值和结果,以及df2中相同的参数和结果。
谢谢。
df1:
Parameters Result
xxx yes
yyy no
df2:
Parameters Result
xxx yes
yyy no
答案 0 :(得分:1)
首先必须使用Parameters
的相同顺序和两个DataFrame
的相同长度,然后才可以使用:
df2['new'] = np.where(df1['Result'].eq(df2['Result']), 'OK', '')
如果可能的顺序不同或长度不同,请将Series.map
与numpy.where
和Series.eq
相等:
s = df2['Parameters'].map(df1.set_index('Parameters')['Result'])
df2['new'] = np.where(s.eq(df2['Result']), 'OK', '')
print (df2)
Parameters Result new
0 PubkeyAuthentication no
1 PermitRootLogin ys
2 PasswordAuthentication no
3 PermitEmptyPasswords no OK
4 X11Forwarding no OK
5 AllowUsers user OK