清除特定数据类型上的列

2024-10-04 05:27:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试清理一些列,我遇到了一些事情。 每个产品都有一组具有二进制值的销售数据

附件是数据集的一个示例

这个过程首先是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,”]


Tags: cleandfstringindexreturnnames产品def