比较pandas

时间:2017-08-01 14:39:39

标签: python pandas dataframe

我这里有两个数据帧:

答:d e,d c,a c,

B:a c,d c,

有不同数量的线。(没有相等的线)。如果A中的一行与B中的一行匹配。我们用A的第一列替换A的第二列。所以结果应该是:

C:d e,d d,a a,

1 个答案:

答案 0 :(得分:1)

您可以在所有列上执行左侧join两个数据框,指定indicator=True,以便结果保留 _merge 列,指示A中的行是否匹配一个来自B,并相应地更新第二列:

A_ = A.merge(B.drop_duplicates(), indicator=True, how="left")

# if the row comes from left only then don't make change, otherwise update the second column 
# with first column value
A_[1] = A_[1].where(A_._merge == "left_only", A_[0])   
A_.drop('_merge', 1)

#   0   1
#0  d   e
#1  d   d
#2  a   a
A = pd.DataFrame([['d','e'],['d','c'],['a','c']])
B = pd.DataFrame([['a','c'],['d','c']])