我有数df十万行,并且正在创建一个新的数据框,其中仅包含某些值组的行的顶部分位数:
quantiles = (df.groupby(['Person', 'Date'])['Value'].apply(lambda x: pd.qcut(x, 4, labels=[0, 0.25, 0.5, 1], duplicates='drop')))
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到:
ValueError: Bin labels must be one fewer than the number of bin edges
Run Code Online (Sandbox Code Playgroud)
尝试更改binsto的数量后5,我仍然收到相同的错误。
我怎样才能解决这个问题?
小智 7
我面临着同样的问题,我这样做是为了克服它。
bins = 数据被切片的次数
labels = 您使用标签分类的范围。
当标签 > 垃圾箱时出现此错误
按着这些次序:
步。1:一开始不要传递标签
train['MasVnrArea'] = pd.qcut(train['MasVnrArea'],
q=5,duplicates='drop')
Run Code Online (Sandbox Code Playgroud)
这将导致:
(-0.001, 16.0] 880
(205.2, 1600.0] 292
(16.0, 205.2] 288
Name: MasVnrArea, dtype: int64
Run Code Online (Sandbox Code Playgroud)
第2步:
现在我们可以看到,binned 上只能包含三个类别。因此,相应地分配标签。就我而言,它是 3。所以我传递了 3 个标签。
bin_labels_MasVnrArea = ['Platinum_MasVnrArea',
'Diamond_MasVnrArea','Supreme_MasVnrArea']
train['MasVnrArea'] = pd.qcut(train['MasVnrArea'],
q=5,labels=bin_labels_MasVnrArea,duplicates='drop')
Run Code Online (Sandbox Code Playgroud)
请观看有关垃圾箱的视频以获得清晰的了解。
https://www.youtube.com/watch?v=HofOMf8RgjM
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29760 次 |
| 最近记录: |