Удалить ячейки по их содержимому
df = pd.DataFrame([[1, '?', 3],
[2, '?', 1],
[3, '?', 2]],
columns=['0','1','2'])
df
Необходимо удалить все объекты с пропусками ('?')
Ответы (2 шт):
Автор решения: Andrew
→ Ссылка
Удалить значения не выйдет, а вот заменить значения на 0 или NaN - запросто. Например:
import pandas as pd
df = pd.DataFrame([[1, 5, 3],
[2, 1, 5],
[3, 5, 2]],
columns=['0','1','2'])
def replace_value(pd_data: pd.DataFrame, value_to_replace: int) -> pd.DataFrame:
pd_data[pd_data == value_to_replace] = 0
return pd_data
replace_value(df, 5)
Вывод:
0 1 2
0 1 0 3
1 2 1 0
2 3 0 2
Автор решения: strawdog
→ Ссылка
Если допустить, что в каждой строке нужно удалить одинаковое количество "пропусков", то можно так:
df = df.replace("?", pd.NA)
df = df.apply(lambda x: pd.Series(x.dropna().values), axis=1)
теперь df:
0 1
0 1 3
1 2 1
2 3 2
Если количество пропусков в строках - разное, то этот код тоже будет работать, но у вас появятся NaN-значения.