В моем фрейме данных у меня есть имя, и я хочу разбить его на основе некоторых слов.

Фрейм данных (dff):

 id            name
  1     Midian Almeida(Last)
  2     Robert(ASA)(first)
  3     Nikole John (middle)
  4     Nikole John (first)
  5     Raça Negra  (last)

Я хочу разделить их на первый, последний, средний

Я попробовал следующую часть

Dff ['name']. str.split ('(first) | (last) | (middle)', expand = True) .add_prefix ('name_') Он дает следующий результат:

    name_0 
  Midian Almeida                
    Robert(ASA)       
    Nikole John       
    Nikole John      
    Raça Negra

Но я хочу поместить разделенные слова в другой столбец. желаемый результат:

 id           name       split option
  1     Midian Almeida    (Last)
  2     Robert(ASA)       (first)
  3     Nikole John       (middle)
  4     Nikole John       (first)
  5     Raça Negra        (last)

Как я могу это сделать?

1
sanazz 2 Мар 2021 в 13:41

1 ответ

Лучший ответ

Он содержит то, что вам нужно: Pandas, разделенный на регулярное выражение. Следующее должно работать:

df.name.str.split(r'(\(Last\)|\(first\)|\(middle\))', expand=True)[[0, 1]]

Причина, по которой вам нужно регулярное выражение, заключается в том, что вам нужна группа захвата, в данном случае круглые скобки вокруг всей совпадающей строки. Если вы хотите поиграть с регулярным выражением, чтобы лучше понять его, вы можете использовать следующее: https://regex101.com /

0
Loic RW 2 Мар 2021 в 10:53