我正在为一个班级的ML项目工作。我目前正在清理数据,但遇到了问题。我基本上有一个专栏(被标识为dtype对象),该专栏对酒店的某个方面进行了评级。当我检查此列的值是多少以及它们出现的频率时,我注意到其中有一些错误的值(如下所示,而不是等级,有些行将日期作为值)
rating value_counts()
100 527
98 229
97 172
99 163
96 150
95 127
93 100
90 94
94 93
80 65
92 55
91 39
88 35
89 32
87 31
85 25
86 17
84 12
60 12
83 8
70 5
73 5
82 4
78 3
67 3
2018-11-11 3
20 2
81 2
2018-11-03 2
40 2
79 2
75 2
2018-10-26 2
2 1
2018-08-30 1
2018-09-03 1
2015-09-05 1
55 1
2018-10-12 1
2018-05-11 1
2018-11-14 1
2018-09-15 1
2018-04-07 1
2018-08-16 1
71 1
2018-09-18 1
2018-11-05 1
2018-02-04 1
NaN 1
我想做的是用NaN替换所有看起来像日期的值,以便以后可以用适当的值填充它们。除了逐个选择每个不同的日期并将其替换为NaN之外,还有其他方法吗?有没有办法选择相似的值(在这种情况下,所有以相同的方式开始的日期都是2018年)并全部替换?
感谢您抽出宝贵的时间阅读本文!
答案 0 :(得分:1)
有多个选项可以清除此数据。
选项1:“评级”列属于对象类型,使用“-”搜索字符串并替换为np.nan
df.loc[df['rating'].str.contains('-', na = False), 'rating'] = np.nan
选项2:将列转换为数字,这会将日期强制为nan。
df['rating'] = pd.to_numeric(df['rating'], errors = 'coerce')