Удаление всех символов после пробела в отдельной колонке pandas

Рейтинг: 0Ответов: 3Опубликовано: 11.05.2023

Не могу понять, как удалить все символы после первого пробела в столбце pandas.

Вот пример кода:

import pandas as pd

df = pd.read_csv("log.txt", delimiter=";", names=["Date","Recipe","int"])
df.iloc[0].str.split("_")[0]
print(df)

В файле log.txt:

01.01.2001 10:10:10 ; 110er Nest hol ; 112

Нужно удалить в столбце Recipe все после 110er.

Заранее благодарю за помощь.

Ответы

▲ 3Принят

Можно применить метод apply к столбцу:

df['Recipe'] = df['Recipe'].apply(lambda x: x.split()[0])

Это разобьет каждый элемент столбца по пробелам на список и вернет первый элемент этого списка(первое слово), и заменит изначальное значение на этот первый элемент.

▲ 3

Для общего развития - воспользуйтесь аксессорами str:

df["Recipe"] = df["Recipe"].str.split().str[0]

Замечание: несмотря на то, что этот код короче кода с apply и не привлекает к обработке данных безымянную функцию, на больших датасетах он будет менее эффективен, чем код с использованием apply по очевидным причинам использования двойного аксессора.

▲ 2

Вариант с регуляркой

df = pd.DataFrame([['01.01.2001 10:10:10', '110er Nest hol ', 112]], columns=["Date", "Recipe", "int"])
df.Recipe = df.Recipe.str.replace(' .*', '', regex=True)
print(df)
                  Date Recipe  int
0  01.01.2001 10:10:10  110er  112