Как разделить на разделители "/", используя индекс в Python? - PullRequest
0 голосов
/ 24 сентября 2018

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

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

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

Вот мой код-

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])

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

Ответы [ 3 ]

0 голосов
/ 24 сентября 2018

Я предлагаю использовать 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 голосов
/ 06 июня 2019

У него проблема с индексом: я нашел 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])

0 голосов
/ 24 сентября 2018

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

...