Python 比较pandas中两个不同的行和列dataframe
我这里有两个数据帧: A:DE,DC,AC B:AC,DC 有不同的行数。(没有相等的行)。如果A中的一行与B中的一行匹配。我们用A的第一列替换A的第二列。因此,结果应该是: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
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']])