如何选择和替换列中的相似事件

时间:2019-02-06 18:55:24

标签: python pandas machine-learning data-cleaning

我正在为一个班级的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年)并全部替换?

感谢您抽出宝贵的时间阅读本文!

1 个答案:

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