检查字符串中是否存在两个子字符串中的一个



我使用以下代码替换所有-并从我的数据框架列中删除所有,

df[['sale_price','mrp', 'discount', 'ratings', 'stars']]=df[['sale_price','mrp', 'discount', 'ratings', 'stars']].applymap(lambda r: np.nan if '-' in str(r) else str(r).replace(',', ''))

有一些列是"nan"(不是np)。但只是字符串Nan)。要删除它们,我输入

useless_strings=['-','nan']
df[['sale_price','mrp', 'discount', 'ratings', 'stars']]=df[['sale_price','mrp', 'discount', 'ratings', 'stars']].applymap(lambda r: np.nan if any(xx in str(r) for xx in useless_strings) else str(r).replace(',', ''))

这不会删除那些"nan"字符串。怎么了?

通过字典中定义的子字符串使用DataFrame.replaceregex=True:

df = pd.DataFrame([['10,4','-','nan',5,'kkk-oo']],
columns=['sale_price','mrp', 'discount', 'ratings', 'stars'])
print (df)
sale_price mrp discount  ratings   stars
0       10,4   -      nan        5  kkk-oo

useless_strings=['-','nan']
d = dict.fromkeys(useless_strings, np.nan)
d[','] = ''
print (d)
{'-': nan, 'nan': nan, ',': ''}
cols = ['sale_price','mrp', 'discount', 'ratings', 'stars']
df[cols] = df[cols].replace(d, regex=True)
print (df)
sale_price  mrp  discount  ratings  stars
0        104  NaN       NaN        5    NaN

最新更新