Split () в Python, как использовать, если есть условие, должно пропустить для некоторого значения - PullRequest
1 голос
/ 09 июля 2019

Я новичок в Python, и я хотел бы разделить данные в одном столбце, который включает название фильма с годом выпуска для нескольких столбцов, поэтому я нашел функцию разделения.

Данные организованы как заголовок (год).

То, что я пробовал в python, было:

movies['title'].str.split('(', 1, expand = True)

Исключение произошло в следующих случаях:

Город потерянных детей, (Cité des enfants perdus, La) (1999)

Город потерянных детей. Cité des enfants perdus, La) (1999)

То, что я ожидал, был только 1999), переходит ко второму столбцу.

Мне нужна твоя помощь!

Ответы [ 2 ]

3 голосов
/ 09 июля 2019

Я бы предложил pd.Series.str.rsplit:

Для данной серии s:

print(s)
0    City of Lost Children, The (Cité des enfants perdus, La) (1999)
1    'City of Lost Children, The. Cité des enfants perdus, La) (1999)'
dtype: object

Использование s.str.rsplit('(', 1, expand=True):

                                                   0      1
0  City of Lost Children, The (Cité des enfants p...  1999)
1  City of Lost Children, The. Cité des enfants p...  1999)
3 голосов
/ 09 июля 2019

Я голосую за использование re.findall здесь с шаблоном (.*?) \((\d{4})\):

input = """City of Lost Children, The (Cité des enfants perdus, La) (1999)
           City of Lost Children, The. Cité des enfants perdus, La) (1999)"""

matches = re.findall(r'\s*(.*?) \((\d{4})\)', input)
print(matches)

Это печатает:

[('City of Lost Children, The (Cité des enfants perdus, La)', '1999'),
 ('City of Lost Children, The. Cité des enfants perdus, La)', '1999')]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...