ValueError: длина столбцов должна совпадать с длиной ключа (разделить столбец на несколько столбцов, используя python) - PullRequest
2 голосов
/ 20 апреля 2020

Вопрос задавался много, но я все еще не близок к решению. У меня есть столбец, который выглядит примерно так

enter image description here enter image description here enter image description here

Что я хочу разделить страну и язык на разные столбцы, например

Country    Language 
Vietnam    Vietnamese_display 1
Indonesia  Tamil__1
India      Tamil_Video_5

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

df[['Country', 'Language']] = df['Line Item'].str.split('_\s+', n=1, expand=True)

Как я могу пропустить первый "_", чтобы получить желаемые результаты? Спасибо

1 Ответ

1 голос
/ 20 апреля 2020

Вы можете использовать

df[['Country', 'Language']] = df['Line Item'].str.extract(r'^_*([^_]+)_(.+)')

См. Демоверсию regex

Подробности

  • ^ - начало строки
  • _* - 0 или более символов подчеркивания
  • ([^_]+) - Группа захвата 1: любой один или несколько символов, отличных от _
  • _ - _ char
  • (.+) - Группа 2: любой один или несколько символов, кроме символов разрыва строки.

Pandas test:

df = pd.DataFrame({'Line Item': ['Vietnam_Vietnamese_display 1','Indonesia_Tamil__1','India_Tamil_Video_5']})
df[['Country', 'Language']] = df['Line Item'].str.extract(r'^_*([^_]+)_(.+)')
df
#                      Line Item    Country              Language
# 0  Vietnam_Vietnamese_display 1    Vietnam  Vietnamese_display 1
# 1            Indonesia_Tamil__1  Indonesia              Tamil__1
# 2           India_Tamil_Video_5      India         Tamil_Video_5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...