繁体   English   中英

如何将 <1 项归为 0

[英]How can I bin items <1 as 0

我正在测试下面的代码(感谢 Andy L.)

bins = [0, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 3.75, 4, 4.25, 4.5, 4.75, 5, 5.25, 5.5, 5.75, 6, 6.25, 6.5, 6.75, 7, 7.25, 7.5, 7.75, 8, 8.25, 8.5, 8.75, 9, 9.25, 9.5, 9.75, 10, np.inf]
labels = ['0', '1', '1.25', '1.5', '1.75', '2', '2.25', '2.5', '2.75', '3', '3.25', '3.5', '3.75', '4', '4.25', '4.5', '4.75', '5', '5.25', '5.5', '5.75', '6', '6.25', '6.5', '6.75', '7', '7.25', '7.5', '7.75', '8', '8.25', '8.5', '8.75', '9', '9.25', '9.5', '9.75', '10']

dataset['RatingScore'] = pd.cut(dataset['Rating'], bins=bins, labels=labels, right=True)

它就像我想要的那样工作,除了“评级”字段中 <1 的值。 我想捕获所有 <1 的内容,包括任何负数,并将其全部扫入标记为 0 的 bin 中。我认为 'bins' 和 'labels' 中的前导 0 可以处理这种情况,但事实并非如此。

您可以将您的左边缘定义为-np.inf作为任何低于 1 的所有内容(类似于您的右边缘),或者由于唯一未分类的内容将是负数,您可以.fillna

#bins = [0, 1, 1.25, 1.5 ..., np.inf]
df['RatingScore'] = pd.cut(df['rating'], bins=bins, labels=labels, right=True).fillna(labels[0])

#bins = [-np.inf, 1, 1.25, 1.5, ..., np.inf]
df['RatingScore'] = pd.cut(df['rating'], bins=bins, labels=labels, right=True)

import pandas as pd
import numpy as np
np.random.seed(123)
df = pd.DataFrame({'rating': np.random.normal(0, 10, 5)})

bins = [-np.inf, 1, 5, 9, np.inf]
labels = ['0', '1', '5', '9']

df['RatingScore'] = pd.cut(df['rating'], bins=bins, labels=labels, right=True)
#          rating RatingScore
#0 -10.856306           0
#1   9.973454           9
#2   2.829785           1
#3 -15.062947           0
#4  -5.786003           0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM