清理特定数据类型上的Pandas列



我试图清理一些列,我遇到了一些事情。有一堆销售数据,每个产品都有二进制值。

附件是数据集的示例。

进程已先到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])]

相关内容

  • 没有找到相关文章

最新更新