Токенизация данных в Python (преобразование данных в шаблоны) - PullRequest
4 голосов
/ 11 июля 2019

У меня есть датафрейм, подобный приведенному ниже:

Name      | City

Apple     | Tokyo
Papaya    | Pune
TimGru334 | Shanghai
236577    | Delhi

Мне нужно перебрать каждое значение и токенизировать данные в Python. Чтобы объяснить подробно:

  • Для значения 'Apple' это должно быть преобразовано в 'ccccc', где c обозначает символ.
  • Для 'TimGru334' это должно быть преобразовано в 'ccccccddd'
  • Рассмотрим значение «236577», его следует преобразовать в «dddddd», где «d» означает цифру / число.

Может кто-нибудь помочь мне, пожалуйста?

П.С .: Я новичок в платформе, поэтому извините, если я ошибаюсь. Заранее спасибо:)

Ответы [ 2 ]

4 голосов
/ 11 июля 2019

Использование Series.replace - сначала не числовые, а затем числовые значения - важен порядок значений в списках:

df['Name'] = df['Name'].replace(['\D', '\d'], ['c','d'], regex=True)
print (df)
        Name      City
0      ccccc     Tokyo
1     cccccc      Pune
2  ccccccddd  Shanghai
3     dddddd     Delhi

При необходимости заменить все столбцы:

df = df.replace(['\D', '\d'], ['c','d'], regex=True)
print (df)
        Name      City
0      ccccc     ccccc
1     cccccc      cccc
2  ccccccddd  cccccccc
3     dddddd     ccccc
3 голосов
/ 11 июля 2019

Используйте str.replace:

df['Name'] = df['Name'].str.replace('\D', 'c').str.replace('\d', 'd')

А теперь:

print(df)

Is:

        Name      City
0      ccccc     Tokyo
1     cccccc      Pune
2  ccccccddd  Shanghai
3     dddddd     Delhi

Чтобы сделать все столбцы, используйте ответ @ jezrael,в противном случае используйте:

df = df.apply(lambda x: x.str.replace('\D', 'c').str.replace('\d', 'd'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...