如果元素等于数据框B中的元素,则从数据框A中删除行的有效方法

时间:2019-03-22 18:58:59

标签: python pandas dataframe

我在数据框B中有一列,其中包含我希望从数据框A中删除的元素(如果A包含它们)。我希望从A删除整行。

我对编程并不陌生,但是我正在学习广泛的熊猫库。从我所看到的,这不可能是有效或适当的。

for i in range(0,106):
    for j in range(0,171):
        if dfB.iloc[i,2] == dfA.iloc[j,0]:
            dfA.drop(j, inplace=True)

2 个答案:

答案 0 :(得分:0)

IIUC:

dfA = dfA.loc[~dfA["ColumnNameInA"].isin(dfB["ColumnNameInB"])]

您需要替换适当的列名称。

在这种情况下,只要dfA["ColumnNameInA"].isin(dfB["ColumnNameInB"])列中的值位于True列中,dfA就会创建一个dfB的序列。我们将其传递给.loc,然后重新分配给dfA

答案 1 :(得分:0)

这也应该起作用:

df = df[df['A'] == df2['B']]

假设:df和df2的长度相同,并且您正在比较df中的第x行与df2中的第x行。

示例数据集:

df = pd.DataFrame({'A': [1,2,3]})
df2 = pd.DataFrame({'B': [1,4,3]})

输出:

df


    A
0   1
2   3