удаление похожих строк из кадра данных панд - PullRequest
0 голосов
/ 29 ноября 2018

Совершенно новый для науки о данных и хотел заняться простым проектом (используя Jupyter Notebook и Python 3.7).По сути, я хочу использовать НЛП, чтобы найти самые распространенные фразы в 50 лучших американских телешоу.Тем не менее, я столкнулся с загадкой.Набор данных, который у меня есть, хранит сезон шоу как отдельную запись.Так, например, у меня есть нечто, похожее на это:

  • Сезон Южного парка 14
  • Сезон семейного парня 3
  • Сезон Южного парка 10
  • Сезон Южного парка 11
  • Сезон Южного парка 13
  • Сезон семейного парня 1
  • Сезон теории большого взрыва 8

Мне интереснов топ 50 уникальных выставок.Есть ли способ отфильтровать или удалить подобные записи в Pandas DataFrame?Что-то, что сохранит первую запись, но удалит все остальные?(Я планирую собирать стенограммы каждого эпизода из каждого шоу, поэтому первый экземпляр телешоу не имеет значения, если подобные записи удалены, чтобы освободить место для других уникальных записей).

Я пытаюсь выяснить что-то, что могло бы вернуть это (на основе приведенного выше примера):

  • Сезон Южного парка 14
  • Сезон семейных парней 3
  • Сезон теории большого взрыва 8

К сожалению, я новичок и не знаю, с чего начать, будь то регулярные выражения, нарезка строк и т. Д.

Спасибо за помощь!

1 Ответ

0 голосов
/ 29 ноября 2018

Похоже, у вас есть стандартное соглашение об именах, поэтому вы можете использовать регулярные выражения здесь для удаления дубликатов, основанных на тексте, предшествующем определенному сезону.

Настройка

df = pd.DataFrame({'show': {0: 'South Park Season 14',
  1: 'Family Guy Season 3',
  2: 'South Park Season 10',
  3: 'South Park Season 11',
  4: 'South Park Season 13',
  5: 'Family Guy Season 1',
  6: 'The Big Bang Theory Season 8'}})

str.extract + drop_duplicates:

df.loc[
  df.show.str.extract(r'(.*)\s?Season').drop_duplicates().index
]

                           show
0          South Park Season 14
1           Family Guy Season 3
6  The Big Bang Theory Season 8

Если вы просто хотели название шоу, ине определенный сезон, это даже проще:

 df.show.str.extract(r'(.*)\s?Season').drop_duplicates()

                     0
0           South Park
1           Family Guy
6  The Big Bang Theory
...