我试图清理一些列,我遇到了一些事情。有一堆销售数据,每个产品都有二进制值。
附件是数据集的示例。
进程已先到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().
谁能给我一些方向,什么可能是错误的在这里?
列是这样的:
'Product': [0,1,Nan,11, ' ']
如果您只需要二进制值,这应该可以达到目的:
df = df[df[col].isin([0, 1])]