Почему результат после .split() сдвинут на одну позицию?

У меня есть датафрейм с колонкой df['address'] в которой содержится адрес примерно вот такого формата: 12951 Williams Crossing\nJohnnyville, DC 30723

Мне нужно создать отдельную колонку df['zip_code'] в которой будет содержаться только индекс (последние 5 цифр адреса - в случае примера выше - 30723).

# Making a list
list1 = []

for i in df['address']:
    a = str(i).split()[-1]
    list1.append(a)

# Making a dataframe out of list1:
zuk = pd.DataFrame({'zip_code':list1})

# Concatenating a new dataframe with the old one
df = pd.concat([df,zuk], axis=1, sort=True)

В результате, len(df) получается 396030 rows вместо 396029 исходных.

Откуда берется дополнительный ряд? При беглом анализе df, колонки 'address' и 'zip_code' соответсвуют друг другу.


Ответы (1 шт):

Автор решения: strawdog

Зачем вы используете pandas, если полностью игнорируете ее векторизованные функции? какой смысл тогда?

Вместо всего вашего кода в вопросе, попробуйте выделить зип-код в отдельную колонку так:

df["zip"] = df["address"].str.split().str[-1]
→ Ссылка