Удаление данных дублирует комплекс данных - PullRequest
4 голосов
/ 19 июня 2020
import pandas as pd

search = pd.DataFrame({
  "Code": ["BB", "BB", "CC", "CC", "CC", "DD", "DD"],
  "N1": [22, 20, 33, 30, 31, 44, 40]
})

confirmed = pd.DataFrame({'N2': [30, 40, 50]})

Привет, дорогая, у меня возник вопрос при изучении Python / pandas для анализа данных. У меня есть два фрейма данных выше, я использую sh для поиска значения данных в подтвержденном df, и если значение совпадает / появляется в первом df (поиск), мы сохраняем это значение и соответствующий ему «Код» и удаляем другое такое же значение кода. Например, 30 в «подтвержденном» df, и оно также появляется в «поисковом» кадре данных, поэтому мы сохраняем значение 30 и его код «CC», тем временем мы удаляем остальные «CC» и значения ( 33, 31). То же и с остальными.

В итоге фрейм данных "search" должен выглядеть так:

  Code  N1
0   BB  22
1   BB  20
2   CC  30
3   DD  40

Это довольно сложный вопрос для меня, как Python ладья ie, так что если кто-нибудь есть идеи, помогите пожалуйста. Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 19 июня 2020

Сделать с transform после isin проверить

s=search.N1.isin(confirmed.N2)
m=(~s).groupby(search['Code']).transform('all') | s
out=search[m]
out
  Code  N1
0   BB  22
1   BB  20
3   CC  30
6   DD  40
1 голос
/ 19 июня 2020

Подобно ответу Yorben_s, но также с np.where:

df = search.copy()
df['flag'] = np.where((df['N1'].isin(comfirmed['N2'])), 1, 0)
df['flag'] = np.where((df.groupby('Code')['flag'].transform(sum) == 0), 1, df['flag'])
df = df.loc[df['flag'] == 1].drop('flag', axis=1)
df
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...