Есть несколько способов сделать это, и ниже приведены некоторые идеи о том, как реализовать предложенный метод.
Шаг 1:
Проверьте, содержит ли строка толькобуквенные символы с использованием str.isalpha()
метода:
df["column"].apply(lambda x: x if x.isalpha() else None)
Выше будет возвращено Series
с числовыми значениями в столбце ID
как None.Вы можете сохранить это в новом столбце.
Это решение предполагает, что каждый x
является строкой.
Если вы точно не знаете, что все числа в вашемСтолбец - это строки. Вы можете создать список городов:
my_cities = ['Melbourne', 'Sydney']
Затем проверьте, является ли значение в вашем столбце городом, и сохраните его в логическом Series
:
is_city = df['column'].isin(my_cities)
Примените Series
в качестве маски и замените значения на None
:
df.loc[~is_city, 'column'] = None
(обратите внимание, что ~
означает «не», поэтому будут возвращаться строки, в которых значение «не является городом»).
Шаг 2:
Заполните новый столбец, используя метод ffill
:
df["new_column"].fillna(method="ffill")
ffill
в основном выполняет шаг 3 в вашемвопрос.Вы можете прочитать об этом здесь .
Шаг 3:
Наконец, удалите все строки, содержащие хотя бы одну None
:
df.dropna()