В одном 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])
Когда я выполняю код выше, я обнаружил ошибку "Индекс вне диапазона".
Я предлагаю использовать 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]
Здесь это просто означает, что иногда в нескольких других столбцах нет "/"
. Итак, когда нет "/"
, раскол будет иметь только один элемент. Но вы x.split("/")[1]
доступ к x.split("/")[1]
. это вызывает ошибку индекса. Чтобы исправить это, просто проверьте, присутствует ли "/"
в x или просто проверьте длину разделения. Если его больше 1, это означает, что присутствует "/"
.
len(x.split("/"))
У него есть проблема с индексом: я нашел 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])
Can only use .str accessor with string values, which use np.object_ dtype in pandas
.astype(str)