Заменить совпадающие строки новым текстом в Pandas Dataframe - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь заменить имена в столбце «Имя» общим идентификатором и создать новый столбец «research_code», после чего столбец «Имя» будет удален.

Я не хочу удалять дубликаты, но хочу, чтобы все экземпляры "Buzz Lightyear" заменялись одним и тем же целым числом (т. Е. 1). Таким образом, все "Базз Лайтеры" равны "1", все "Twighlight Sparkle's" равны "2". и т.д.

Когда я запускаю это, я не получаю ошибок, но код исследования не сохраняется по какой-то причине.

  full_set = pd.read_csv(filename, index_col=None, header=0)

  grouped_set = full_set.groupby('Name')
  names = grouped_set.groups.keys()
  idx = 1
  for c in names:
    set_index = str(idx + 1)
    idx = int(set_index) + 1

    replaceables = full_set[(full_set.Name == str(c))]
    for index, row in replaceables.iterrows():

      print(row['Name'])
      print(row['research_code'])
      row['research_code'] = set_index
      print(row['research_code'])
  print(full_set.head)

1 Ответ

0 голосов
/ 06 апреля 2019

Категории могут быть использованы.

import pandas as pd
import sys
if sys.version_info[0] < 3: 
    from StringIO import StringIO
else:
    from io import StringIO

filename = StringIO("""Name
Rahul
Doug
Joe
Buzzlightyear
Twighlight Sparkle
Twighlight Sparkle
Liu
""")

full_set = pd.read_csv(filename, index_col=None, header=0)
full_set['research_code']  = full_set['Name'].astype('category')
full_set['research_code'] = full_set['research_code'].cat.rename_categories([i for i in range(full_set['research_code'].nunique())])
print(full_set.drop(['Name'], axis=1))

Этот последний бит в понимании списка немного безвозмезден. Просто переименуйте категории, предоставив rename_categories() список новых имен (целых чисел в приведенном выше вопросе), который равен числу уникальных значений в столбце Names.

  research_code
0             4
1             1
2             2
3             0
4             5
5             5
6             3

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