我正在为一个课程的机器学习项目工作。目前我在清理数据时遇到一个问题。我有一个列(被识别为dtype object类型),这个列包含关于酒店某一方面的评级。当我检查这个列的值及其出现的频率时,我注意到其中有一些错误的值(如你下面所见,有些行不是评级,而是日期)
rating value_counts() 100 52798 22997 17299 16396 15095 12793 10090 9494 9380 6592 5591 3988 3589 3287 3185 2586 1784 1260 1283 870 573 582 478 367 32018-11-11 320 281 22018-11-03 240 279 275 22018-10-26 22 12018-08-30 12018-09-03 12015-09-05 155 12018-10-12 12018-05-11 12018-11-14 12018-09-15 12018-04-07 12018-08-16 171 12018-09-18 12018-11-05 12018-02-04 1NaN 1
我想做的是将所有看起来像日期的值替换为NaN,以便之后可以用合适的值填充它们。除了逐个选择不同的日期并用NaN替换之外,有没有更好的方法来做这件事?有没有办法选择相似的值(在这种情况下,所有以相同方式开始的日期,2018年)并一次性替换它们?
感谢你花时间阅读这篇文章!!
回答:
有几种方法可以清理这些数据。
选项1:评级列是object类型,通过搜索包含’-‘的字符串并替换为np.nan
df.loc[df['rating'].str.contains('-', na = False), 'rating'] = np.nan
选项2:将列转换为数值类型,这将强制日期转换为NaN。
df['rating'] = pd.to_numeric(df['rating'], errors = 'coerce')