Python 比较pandas中两个不同的行和列dataframe

Python 比较pandas中两个不同的行和列dataframe,python,pandas,dataframe,Python,Pandas,Dataframe,我这里有两个数据帧: A:DE,DC,AC B:AC,DC 有不同的行数。(没有相等的行)。如果A中的一行与B中的一行匹配。我们用A的第一列替换A的第二列。因此,结果应该是: C:de,dd,aa,您可以在所有列上对两个数据帧进行左连接,指定indicator=True,以便结果保留一个_merge列,该列指示a中的行是否与B中的行匹配,并相应地更新第二列: A_ = A.merge(B.drop_duplicates(), indicator=True, how="left") # if t

我这里有两个数据帧:

A:DE,DC,AC

B:AC,DC

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


C:de,dd,aa,

您可以在所有列上对两个数据帧进行左
连接
,指定
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


下面我看到了:merge()得到了一个意外的关键字参数'indicator'您使用的是什么版本?该参数被添加到
0.17.0
。您可能需要使用
A=A.drop(''u merge',1)
或使用
inplace
参数
A.drop('u merge',1,inplace=True)
A
应该是您需要的。我使用这个A.drop(“'u merge',1,inplace=True)。非常感谢!
A = pd.DataFrame([['d','e'],['d','c'],['a','c']])
B = pd.DataFrame([['a','c'],['d','c']])