这几天在看“hands-on machine learning with sklearn and tensorflow” 的第二章节,狗血的事情发生了。其中的一部分是需要将median_income划分为5个等分,然后大于5的部分全部归类为5,代码如下:
housing["income_cat"] = np.ceil(housing["median_income"] / 1.5)
housing["income_cat"].where(housing["income_cat"] < 5, 5.0, inplace=True)
结果我看了大半天还以为housing["income_cat"] < 5
这里写错了,后来才发现mask 函数和 where 作用刚好相反。
s = pd.Series(range(5))
s.where(s > 1, 10)
0 10.0
1 10.0
2 2.0
3 3.0
4 4.0
s.mask(s > 1, 10)
0 0.0
1 1.0
2 10.0
3 10.0
4 10.0
df = pd.DataFrame(np.arange(10).reshape(-1, 2), columns=['A', 'B'])
m = df % 3 == 0
# df.where(m, np.array([1,2,3,4,5]).reshape(-1, 5)) #此句话报错
df.where(m, -df)
A B
0 0 -1
1 -2 3
2 -4 -5
3 6 -7
4 -8 9
---------------------
作者:依斐
来源:CSDN
原文:https://blog.csdn.net/dss_dssssd/article/details/82818587
版权声明:本文为博主原创文章,转载请附上博文链接!