Как разделить на разделители «/», используя индекс в Python?

1

В одном DataFrame некоторые столбцы находятся в DataFrame. Я хочу, чтобы значение столбца делилось на "/", используя индекс. Ниже приведен список столбцов, в которых я хочу разделить данные.

Eg:- split_columns = ['Fuel', 'Air Pollution Score', 'City MPG', 'Hwy MPG', 'Cmb MPG', 'Greenhouse Gas Score']

Если в топливе содержатся данные, то выход должен быть похож на "этанол/газ".

Вот мой code-

split_columns = ['Fuel', 'Air Pollution Score', 'City MPG', 'Hwy MPG', 'Cmb MPG', 'Greenhouse Gas Score']

for c in split_columns:
  df1[c] = df1[c].apply(lambda x: x.split("/")[0])
  df2[c] = df2[c].apply(lambda x: x.split("/")[1])

Когда я выполняю код выше, я обнаружил ошибку "Индекс вне диапазона".

Теги:
pandas
numpy
indexoutofboundsexception
delimiter

3 ответа

1
Лучший ответ

Я предлагаю использовать Series.str.split с индексацией str[0] и str[1] для выбора первого и второго вложенных списков.

Если / не существует, вывод - это значение NaN, а не IndexOutOfBoundsException.

for c in split_columns:
  df1[c] = df1[c].astype(str).str.split("/").str[0]
  df2[c] = df2[c].astype(str).str.split("/").str[1]
  • 0
    Получение этой ошибки. Can only use .str accessor with string values, which use np.object_ dtype in pandas
  • 0
    @ user8487380 - добавить .astype(str)
Показать ещё 2 комментария
1

Здесь это просто означает, что иногда в нескольких других столбцах нет "/". Итак, когда нет "/", раскол будет иметь только один элемент. Но вы x.split("/")[1] доступ к x.split("/")[1]. это вызывает ошибку индекса. Чтобы исправить это, просто проверьте, присутствует ли "/" в x или просто проверьте длину разделения. Если его больше 1, это означает, что присутствует "/".

  • 0
    Как проверить длину сплита. Мы собираемся взять каждую гибридную строку и разбить их на две новые строки - одна со значениями для первого типа топлива (значения до "/"), а другая со значениями для второго типа топлива (значения после "/ «).
  • 0
    длина разбиения не что иное, как len(x.split("/"))
0

У него есть проблема с индексом: я нашел 2 решения: 1) Я разделил это на 2 для (в 2 ячейках Jupyter), и эта ошибка исчезла.

для c в split_columns: df1 [c] = df1 [c].apply (лямбда x: x.split("/") [0]) для c в split_columns: df2 [c] = df2 [c].apply (лямбда x: x.split("/") [1])

2) Я переименовываю второй индекс для c в split_columns: df1 [c] = df1 [c].apply (лямбда-x: x.split("/") [0]) df2 [c] = df2 [c].apply (лямбда x: x.split("/") [0])

Ещё вопросы

Сообщество Overcoder
Наверх
Меню