Удаление строк данных, которые не содержат строку определенной длины - PullRequest
2 голосов
/ 18 апреля 2020

У меня есть датафрейм, который содержит столбец со строками в формате XXX / XX / XXX. Я хочу удалить все строки, для которых длина строки между символами '/' не равна двум.

Я получаю сообщение "Ошибка ключа: True" со следующим кодом:

df_issues = df_new[len(df_new['Job'].str.split('/')[1]) != 2 ]

Мой подход состоял в том, чтобы создать серию со всеми строками, для которых длина строки после первого '/' не была равна 2.

Спасибо за любую помощь.

1 Ответ

2 голосов
/ 18 апреля 2020

Некоторые вещи, которые вы здесь ошиблись:

  • len(x) != 2 вернет логическое значение. то есть вы пытаетесь индексировать с помощью df_new[True], что возвращает ключевую ошибку, поскольку фигуры несовместимы (вам нужен индексный массив вдоль строк, что-то вроде df_new[[True, False, True...]])
  • Вам нужен str снова получить доступ для дальнейшего индексирования во втором списке

Вместо этого используйте:

df_new[df_new['Job'].str.split(r'/').str[1].str.len().eq(2.)]

Или мы также можем использовать str.contains:

# corrected with @jon's remarks
df_new[df_new['Job'].str.contains(r'^.{3}/.{2}/.{3}$',na=False)] 
...