Разделяем строку dataframe на две колонки: использование '<fips>'
Быстрый ответ
Метод str.split()
с параметром expand=True
позволяет разбить столбец dataframe на два отдельных столбца.
data[['хлеб', 'начинка']] = data['column'].str.split(' ', 1, expand=True)
Так, в вашем data
отобразятся новые столбцы: хлеб
и начинка
.
Сложные разделения: применение регулярных выражений и extract()
В некоторых случаях столбец нужно разделять более тонко, чем просто на части. Для этого подходит метод str.extract()
с использованием регулярных выражений:
df[['первый', 'второй']] = df['column'].str.extract(r'(\w+)\W+(\w+)')
Знание регулярных выражений крайне важно в таких операциях. Пример использования именованных групп в регулярных выражениях:
df[['первый', 'второй']] = df['column'].str.extract(r'(?P<первый>\w+)\W+(?P<второй>\w+)')
Обработка пропусков
При неравномерном разделении могут появиться пропущенные значения:
df['column'].str.split(' ', expand=True).notnull().all(axis=1)
Этот код позволит проверить новые столбцы на наличие пропусков.
Основное и последующее действия: переименование, слияние, удаление
После разделения нужно привести результаты к порядку. Можно комбинировать методы rename()
и join()
, чтобы добавить новые столбцы к dataframe:
df = df.join(df['column'].str.split(' ', 1, expand=True)
.rename(columns={0: 'первый', 1: 'второй'}))
После завершения операции, не забудьте удалить первоначальный столбец с помощью df.drop()
:
df.drop('column', axis=1, inplace=True)
Визуализация
Представьте столбец вашего dataframe как одну цепочку, которую вы хотите разделить на две части:
До: | Цепь 📿 | "Звено1, Звено2" |
После применения .str.split()
произойдет следующее разделение:
После: | Звено1 📿 | Звено2 📿 |
df[['Звено1', 'Звено2']] = df['Цепь'].str.split(',', expand=True)
Теперь у вас есть два отдельных столбца, готовых к дальнейшей обработке!
Сложные случаи разделения? Нет проблем!
Если перед вами стоит сложная задача, регулярные выражения всегда вам в помощь:
df['column'].str.split('\s+', expand=True)
С помощью этого метода вы сможете обнаружить спрятанные пробелы в данных.
При разделении даты и времени важно соблюдать формат данных:
df[['дата', 'время']] = df['datetime'].str.split('T', expand=True)
С помощью .str.get()
или .str[index]
можно обращаться к элементам после разделения. Именно как секретный трюк:
df['первое_слово'] = df['column'].str.split().str.get(0)
Творческое извлечение и мощь extractall()
Используйте .str.extractall()
для детального извлечения данных из столбца:
соответствия = df['column'].str.extractall(r'(\b\w+\b)')
Этот метод идеален для работы со столбцами, содержащими множество "скрытых сюрпризов".
Полезные материалы
- pandas.Series.str.split – ваш первый шаг в изучении
str.split()
. - Обзор типов данных в Pandas – познайте все уголки зоопарка Pandas.
- Объединение наборов данных – как управлять данными после их разделения.
- Уроки по очистке данных – всё, что нужно знать, чтобы поддерживать порядок в своих данных.
- 5 малоизвестных трюков с pandas – секретные методы совершенствования ваших данных.