如何在熊猫数据框中使用NaN替换带有附加在符号末尾的符号的值

时间:2019-01-15 09:23:40

标签: pandas dataframe data-cleaning

我正在尝试清理我的熊猫数据集,但是我想不出一种方法来删除在值的末尾附加#,*,x的怪异值。我想用np.nan替换所有这些值。

我在下面附加了一个链接,显示我的数据集的样子。

LocalDateTime.toString()

3 个答案:

答案 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)