Удаление всех символов после пробела в отдельной колонке pandas
Не могу понять, как удалить все символы после первого пробела в столбце 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])
Это разобьет каждый элемент столбца по пробелам на список и вернет первый элемент этого списка(первое слово), и заменит изначальное значение на этот первый элемент.
Для общего развития - воспользуйтесь аксессорами str:
df["Recipe"] = df["Recipe"].str.split().str[0]
Замечание: несмотря на то, что этот код короче кода с apply и не привлекает к обработке данных безымянную функцию, на больших датасетах он будет менее эффективен, чем код с использованием apply по очевидным причинам использования двойного аксессора.
Вариант с регуляркой
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