Очистка столбца Pandas для определенного типа данных

avatar
jpu
8 августа 2021 в 21:59
105
1
0

Я пытаюсь очистить некоторые столбцы и столкнулся с некоторыми проблемами. Существует множество данных о продажах с двоичными значениями для каждого продукта.

Прилагается образец набора данных.

Сначала процесс был направлен на dropna. Кроме того, есть значения столбцов, такие как и 11, которые не соответствуют желаемому двоичному значению. Я пробовал здесь несколько вещей, таких как

#### THIS SHOULD BE CLOSE 
def clean_empty_string(df, col):
    df = df[df[col] != 1] or df[df[col] != 0]
    return df

for i in df.columns:
    clean_empty_string(df, i)

# this does the same except not in a function
#cleandata4bestdeal = cleandata4bestdeal[cleandata4bestdeal['DellLaptop'] != ' ']

def get_index_names(df, col, val):
    index_names = df[df[col] == val].index
    return index_names

def drop_index_names(df, idx):
    df.drop(idx, inplace=True)
    return df


idx = get_index_names(df, 'DellLaptop', ' ')

drop_index_names(df, idx)

Когда я пытаюсь: df = df[df['DellLaptop'] != ' '] Это работает, но когда я вставляю его в функцию clean_empty_string, я получаю

ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

Может кто-нибудь подсказать, что здесь может быть не так?

Вот как выглядит столбец:

'Продукт': [0,1,Nan,11, ' ']

Источник

Ответы (1)

avatar
fsimonjetz
8 августа 2021 в 22:20
1

Если вам нужны только двоичные значения, это должно помочь:

df = df[df[col].isin([0, 1])]