Добавление только новых значений из кадра данных в другой кадр данных в пандах - PullRequest
0 голосов
/ 15 сентября 2018

У меня очень большой фрейм данных. У меня также есть небольшой фрейм данных.

Оба этих фрейма данных будут иметь одинаковые столбцы.

Небольшой фрейм данных будет иметь несколько строк, которые уже присутствуют в большом фрейме данных. Я хочу добавить маленький фрейм данных к большому, чтобы в большом фрейме не было дубликатов.

Я могу просто добавить, а затем удалить дубликаты. Но это приведет к неэффективному использованию памяти для сохранения в памяти дублированного фрейма данных.

Есть ли другой метод, который может эффективно использоваться для решения этой проблемы ??1009*

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Данные

df1 = pd.DataFrame({'a': [1,2,3,4,5,6,7]})
df2 = pd.DataFrame({'a': [3,8,4,9]})

Используйте объединение для получения уникальных строк,

df3 = df2.merge(df1, how='left', indicator=True)

    a     _merge
0   3       both
1   8  left_only
2   4       both
3   9  left_only

Теперь выберите строки с помощью 'left_only',

df3 =df3[df3._merge == 'left_only'].iloc[:,:-1]

Наконец, добавьте их.

df1 = pd.concat([df1, df3], ignore_index=True)
0 голосов
/ 15 сентября 2018

А как насчет isin ?

Данные:

df1 = pd.DataFrame({'a': [1,2,3,4,5,6,7]})
df2 = pd.DataFrame({'a': [3,4,9]})

Код:

df1.append(df2[df2.isin(df1) == False])

Выход:

   a
0  1
1  2
2  3
3  4
4  5
5  6
6  7
0  3
1  4
2  9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...