我正在尝试清理我的熊猫数据集,但是我想不出一种方法来删除在值的末尾附加#,*,x的怪异值。我想用np.nan替换所有这些值。
我在下面附加了一个链接,显示我的数据集的样子。
答案 0 :(得分:1)
您可以使用pandas to_numeric-确保添加errors=coerce
。
答案 1 :(得分:1)
使用set_index
仅获取数字列,然后使用apply
,因为to_numeric
分别与每一列(Series
)一起使用,将非数字替换为NaN
使用errors='coerce'
参数:
non_num_cols = ['date']
df = df.set_index(non_num_cols).apply(pd.to_numeric, errors='coerce').reset_index()
答案 2 :(得分:0)
选项1:您要用清除后的值替换垃圾
replace_dict = {
'#': '',
'*': ''
}
for key in replace_dict.keys():
df = df.applymap(lambda x: x.replace(key, replace_dict[key]) if type(x) is str else x)
选项2:您想用np.nan替换垃圾
import pandas
import re
replace_char = ['#', '*']
for char in replace_char:
df = df.applymap(lambda x: np.nan if re.search('.*' + char, str(x)) else x)