Эффективный способ удаления строки из Dataframe A, если элемент равен элементу в Dataframe B - PullRequest
1 голос
/ 22 марта 2019

У меня есть столбец в Dataframe B, который содержит элементы, которые я хочу удалить из Dataframe 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 голосов
/ 22 марта 2019

Это также должно работать:

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

Предположение: df и df2 имеют одинаковую длину, и вы сравниваете строку x от df до строки x с df2.

Пример набора данных:

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

Выход:

df


    A
0   1
2   3
0 голосов
/ 22 марта 2019

IIUC:

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

Вам необходимо подставить соответствующие имена столбцов.

В этом случае dfA["ColumnNameInA"].isin(dfB["ColumnNameInB"]) создает серию, равную True всякий раз, когда значение в *Столбец 1008 * находится в столбце dfB.Мы передаем это .loc и переназначаем dfA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...